0

こんにちは私の2D配列列は2回印刷されています。間違ったコードを特定するのを手伝ってください。以下は私が試したことです:

public class ArrayExercise {
public static void main(String[] args){


    String[][] myArray = {
        {"Philippines", "South Korea", "Japan", "Israel"}, // Countries
        {"Manila", "Seoul", "Tokyo", "Jerusalem" } // capital cities
    };

    String outputString = String.format("%16s\t%9s", "Country", "City" );
    System.out.println(outputString);

    for( int col = 0; col < myArray[0].length; ++col ){
        for( int row = 0; row < myArray.length; ++row ){  
           System.out.printf( "%16s\t%9s", myArray[0][col], myArray[1][col]  );
        }         
        System.out.println();         
    }
  }

}

それは私を狂わせています、私はエラーを見つけることができないようです:(

4

8 に答える 8

2

内側のループでは、両方の行を印刷しています:- myArray[0][col], myArray[1][col]

次に、内部ループを使用してそのことを2回繰り返します。-

    for( int row = 0; row < myArray.length; ++row ){  
       System.out.printf( "%16s\t%9s", myArray[0][col], myArray[1][col]  );
    } 

この内部ループを削除する必要があります:-

for( int col = 0; col < myArray[0].length; ++col ){

    System.out.printf( "%16s\t%9s", myArray[0][col], myArray[1][col]  );

    System.out.println();         
}
于 2012-10-04T12:22:15.133 に答える
0

内側のループを削除します。これは、達成しようとしていることには実質的に必要ないためです。

for ( int col = 0; col < myArray[0].length; ++col ) {
  System.out.printf( "%16s\t%9s", myArray[0][col], myArray[1][col]);
  System.out.println();
}

つまり、国ごとに(myArray[0][col])、その首都()を印刷しmyArray[1][col]ます。

于 2012-10-04T12:20:14.773 に答える
0

内側のループにより、2回印刷されます。を使用することはありませんrow

for( int col = 0; col < myArray[0].length; ++col ){
    System.out.printf( "%16s\t%9s", myArray[0][col], myArray[1][col]  );
    System.out.println();         
}
于 2012-10-04T12:21:54.363 に答える
0

同じものを印刷している間、コードは2回ループしています。内側のforループを削除します。

于 2012-10-04T12:22:27.063 に答える
0

これを使って:

System.out.printf( "%16s\t", myArray[row][col]  );

それ以外の:

System.out.printf( "%16s\t%9s", myArray[0][col], myArray[1][col]  );

両方の行を印刷しています:-myArray[0][col], myArray[1][col]

于 2012-10-04T12:22:42.833 に答える
0

「myArray.length」は2つです。したがって、コードは内側の「for」ループを2回通過します。ループ変数「row」が内部の「for」内で使用されることはありません。したがって、同じものが2回印刷されます。

内側の「for」を取り出します。

于 2012-10-04T12:23:58.573 に答える
0

forループが多すぎます。最も内側のループを削除しましたが、期待どおりに機能しました。

public static void main(String[] args){


    String[][] myArray = {
        {"Philippines", "South Korea", "Japan", "Israel"}, // Countries
        {"Manila", "Seoul", "Tokyo", "Jerusalem" } // capital cities
    };

    String outputString = String.format("%16s\t%9s", "Country", "City" );
    System.out.println(outputString);

    for( int col = 0; col < myArray[0].length; col++ ){
        System.out.printf( "%16s\t%9s", myArray[0][col], myArray[1][col]  );
        System.out.println();         
    }
}  
于 2012-10-04T12:33:24.210 に答える
0

アレイは、すべての正方形を訪問するためにすべての行のすべての列を訪問する必要があるチェス盤のようなものではなく、食器棚のようなものだと考えてください。

あなたは列がいくつあるか知っています。(2)

したがって、最初の列のエントリ数をループして、各エントリの2番目の列で資本が何であるかを確認するだけで済みます。

于 2012-10-04T12:34:52.140 に答える