dポイントプレゼントキャンペーン実施中!

こんばんは、今回はtrim()メソッドの使用方法とキャストの方法についてお伺い致します。
trimメソッドを使用して文字列の前後の空白を削除したいのですが、
通常
String str = " 「こんにちは」";
str = str.trim();
とコーディングしコンパイルして表示するとちゃんと「こんにちは」となるのすですが、これが
ArrayList list = new ArrayList();
BufferedReader br=
new BufferedReader(new FileReader(Test.txt);
while((str = br.readLine()) !=null){
str = str.trim();
list.add(str);
}
br.close();
とコーディングしコンパイルは通るのですが、 「こんにちは」のままで"「"の前にある空白が削除されてません。

私なりに「型」の違いでが原因ではないかと思い、java.io.ArrayList型からjava.lang.String型へキャストしようとしているのですが、コンパイルエラーが出てしまします。
プログラムコードは
ArrayList list = new ArrayList();
String s;
s = (String)list;
としています。
エラー内容は
ScheduleControlCall.java:142: 変換できない型
出現: java.util.ArrayList
要求: java.lang.String
s = (String)list;
^
エラー 1 個
となっています。
度々ですが、ご指導お願い致します。

A 回答 (2件)

 この場合RandomAccessFileは関係ないので、置いておきましょう。

ただ気になる点は

>String s = (String)list.get(2);
>while((s = raf.readLine()) !=null){

 これだと、get()で取得したStringが、使われないままreadLine()で上書きされてしまいます。

>String str = " 「こんにちは」";
>str = str.trim();
>System.out.println(str);

 strはファイルから読み込むのではないのですか?
 とりあえず、「System.out.println(str);」を元のコードの「str = str.trim();」の直後に入れてみれください。空白が除去されているはずです。
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありませんでした。
大変参考になるご意見ありがとうございました。

お礼日時:2003/11/04 19:06

> 「こんにちは」のままで"「"の前にある空白が削除されてません。



 それはどうやって確かめたのですか。結果を表示するコードがないようですが。

 ArrayListから値を取り出すには、たとえば次のようにキャストします。

(String)list.get(0)

 ここでget(n)はn番目(0=先頭)の要素を取り出すメソッドです。get()の返値はObject型なので、元の型(この場合はString)へのキャストが必要です。

 また、trim()で空白が除去されないとしたら、その空白が全角になってはいませんか。

この回答への補足

amajun様早速のご回答有難う御座いました。
>それはどうやって確かめたのですか。結果を表示するコードがないようですが。
String str = " 「こんにちは」";
str = str.trim();
System.out.println(str);
のように結果を表示しております。
>また、trim()で空白が除去されないとしたら、その空白が全角になってはいませんか。
確認しましたが、半角の空白でした。

ArrayListからの読み込みの仕方はこんな感じで宜しいのでしょうか。
BufferedReader br = new BufferedReader(new FileReader(Test.txt));
while((str = br.readLine()) !=null){
str = str.trim();
list.add(str);
・・・・
RandomAccessFile raf = new RandomAccessFile(Test.txt,"rw");
raf.seek(2);
String s = (String)list.get(2);
while((s = raf.readLine()) !=null){
System.out.println(s);
}
Test.txt内には
  「こんにちは」
  「お早う」
   「おやすみ」
の内容が入っています。
ここのプログラムでは初めにTest.txtの内容を読み込みlist(ArrayListオブジェクト)に格納する前にtrimメソッドを使用して要素の前後にある空白を取り除き、格納されている内容を2つ目の要素(この場合は「お早う」と「おやすみ」のみ)から書き出すのを目的としています。

お手数ですが、宜しくお願い致します。

補足日時:2003/11/03 07:27
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!