0

だから私は次のコードを持っています:

while((line = reader.readLine()) != null) {
    String[] row = line.split(",");
    this.table.add(row);  

this.table が次を使用して開始された場所:

ArrayList table = new ArrayList();

次に、次のようにテーブル内の行の長さを取得しようとしたとき:

for(int i=0; i<table.size(); ++i){
    for(int j=0; j<table.get(i).length; ++j) {
        //some code    
        }

(get(i).length; に下線を引き、symbol.symbol: length location: class Object.

どうしたの?string.split() は配列を返さないのですか? もしそうなら、配列クラスのメソッド/変数を使用できないのはなぜですか?

ありがとうございました!

4

4 に答える 4

2

ArrayListは配列のリストではなく、配列に裏打ちされたリストです。

ただし、ジェネリックを使用して配列のリストにすることができます。

List<String[]> table = new ArrayList<String[]>();

その後、コードが機能するはずです。

于 2012-10-21T18:59:55.737 に答える
0

Javaジェネリックを使用する必要があります

List<String[]> table = new ArrayList<String[]>();

次にString[]、呼び出しを含むインスタンスを取得しますget(i)Listまた、インターフェースを使用してテーブル変数を宣言することにも注意してください。可能な限り、実装クラスではなく、ニーズに合ったスーパーインターフェイスを使用してください。

また、Java 1.5以降では、はるかに直感的な構文を使用できます(もちろん、これは、以前に推奨されたジェネリックを使用することを前提としています)。

for(String[] processedRow : table){
    for(String processedField : processedRow) {
        //some code    
    }
}
于 2012-10-21T19:00:18.410 に答える
0

リストを入力する必要があります。

List<String[]> table = new ArrayList<String[]>();

そうすれば、JavaコンパイラはがString[]リストに格納されていることを認識します。

于 2012-10-21T19:00:27.743 に答える
0
ArrayList table = new ArrayList();
//  change with:
ArrayList<String[]> table = new ArrayList();
于 2012-10-21T19:01:00.753 に答える