1

こんにちは、これは単純な 2 次元配列の問題です。次のように、2 つの配列要素を 2 列に表示したいと思います。

国 都市
Phils マニラ
SK ソウル
日本 東京
イスラエル エルサレム

これが私の試したコードです:

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


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

        System.out.print( "Countries\tCities\n" );

        for( int row = 0; row < myArray.length; ++row ){
            System.out.print( "" );
            for( int col = 0; col < myArray[row].length; ++col ){

                System.out.print( "" + myArray[row][col] + "\t" );

            }
        }
        System.out.println( "" );
    }

}

しかし、2列に表示することはできません..どんな助けでも大歓迎です。みんなありがとう :)

4

5 に答える 5

2

をループした後に改行を追加していませんmyArray[row]。新しい行を印刷するには、ループの後にこれを追加する必要があります。

System.out.println();

一般に、行末が必要な場合は、 ではなく を呼び出しSystem.out.print("\n")ますSystem.out.println()System.out.println()システムの行末を使用しますが、これは必ずしも改行文字 ( \n) ではありません。

于 2012-10-04T11:19:41.070 に答える
2

更新:- 2列で印刷する方法は次のとおりです。

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

    int j = 0;

    while (j < myArray[0].length) {
        System.out.printf("%-15s - %-15s", myArray[0][j], myArray[1][j++]);
        System.out.println();
    }

列ごとに2行の値を並行して出力したいので、
列を反復処理して、対応する列の両方の行の値を出力できます..

:-15フォーマットに値を使用しました..一般に、文字列(国または都市)の長さがそれより大きい場合、間違った結果が生じる可能性があります..

さらに改善するために、2行から最長と最長15の長さに置き換えることができます..country stringcity string

于 2012-10-04T11:20:06.037 に答える
1

最初に col を繰り返し、次に row..

for( int col = 0; col < myArray[0].length; ++col ){
            for( int row = 0; row < myArray.length; ++row ){
                System.out.print(myArray[row][col]);
                System.out.print("\t");
            }
            System.out.println();
        }

説明:

あなたの二次元配列はそのようなものです

  • フィリピン[0,0] 韓国[0,1] 日本[0,2] イスラエル[0,3]

  • マニラ[1,0] ソウル[1,1] 東京[1,2] エルサレム[1,3]

しかし、あなたの望みはここにあります[行、列]は前のインデックスです。

  • フィリピン[0,0] マニラ[1,0]
  • 韓国[0,1] ソウル[1,1]
  • 日本[0,2] 東京[1,2]
  • イスラエル[0,3] エルサレム[1,3]

したがって、列でouterloopを繰り返します。innerloop 内で行を繰り返し、"\t" を使用して区切ります。内側のループの後、新しい行を印刷します。

于 2012-10-04T11:34:05.410 に答える
1

同じ長さのリストを 2 つだけ扱っていることが確実にわかっている場合は、次のようにします。

public class ArrayExercise {
    public static void main(String[] args){
        String[][] data = {
            {"Philippines", "South Korea", "Japan", "Israel"}, // Countries                                                                                                                                                 
            {"Manila", "Seoul", "Tokyo", "Jerusalem" } // capital cities                                                                                                                                                    
        };

        System.out.print("Countries\tCities\n");
        int colLength = data[0].length;
        for (int i = 0; i < colLength; ++i) {
            System.out.printf("%s\t%s\n", data[0][i], data[1][i]);
        }
    }
}


国 都市
フィリピン マニラ 韓国
ソウル
日本 東京
イスラエル エルサレム

于 2012-10-04T11:43:52.787 に答える
0

最初に、最初の列の最も長い要素(国)の長さを見つける必要があります。たとえば、最大長は5であり、すべての行に先頭のスペースが必要です。また、2番目の列の最大長を見つける必要があります。ここでは8です。これが完了したら、String.format:を使用して要素を印刷できます。

outputString = String.format("%1$6s %2$8s\n",country, city);
System.out.println(outputString);

フォーマッターは最初のパラメーターの幅をに設定するXので、正しいインデントが得られます。これは、任意の長さの文字列で機能します。

于 2012-10-04T11:28:46.140 に答える