0

私は、ファイルから 1 次元の文字列配列を取得して 2 次元配列に変換する必要があるプログラムに取り組んでいます。ファイルからの配列の取り込みは正常に機能しますが、2 番目の部分が機能しません。

私が取り組んでいるコードは次のとおりです。

char[][] array2 = new char [7][5];

for (int i = 0; i < array1.length; i++)
{
    array2[i]= array[i].toCharArray();   
}

for (int i = 0; i < 5; i++)
{
    for (int j = 0; j < 7; j++)
    {
         System.out.println(array2[i][j]);
    }
}

配列はグリッド形式で印刷されるはずですが、下向きに印刷されています。

どんな助けでも大歓迎です、ありがとう。

4

4 に答える 4

2

print内側のループの代わりに使用printlnし、各ループの後に で空白行を出力しprintlnます。

for (int i = 0; i < 7; i++) // see changes 5/7. You did "new char[7][5]" not [5][7]
{
    for (int j = 0; j < 5; j++) // see changes 7/5
    {
         System.out.print(array2[i][j]);
    }
    System.out.println();
}

アップデート:

以下は、String 配列を 2D char 配列に変換するプログラムです。

public class StringToChar {
    public static void main(String[] args) {
        String[] strArr = { "HELLO", "WORLD" };
        char[][] char2D = new char[strArr.length][];

        for (int i = 0; i < strArr.length; i++) {
            char2D[i] = strArr[i].toCharArray();
        }

        for (char[] char1D : char2D) {
            for (char c : char1D)
                System.out.print(c + " ");

            System.out.println();
        }
    }
}
于 2013-09-26T13:53:27.537 に答える
1

いくつかの提案、

  1. (文字列を保持する場所)に置き換えるchar[][] array2 = new char [7][5];と、2次元配列には文字列と同じ数の行が含まれますchar[][] array2 = new char [array1.length][];array1
  2. あなたのループ
for (int i = 0; i < 5; i++)
{
    for (int j = 0; j < 7; j++)
....
 }

への変更

for (int i = 0; i < array2.length; i++)
{ 
   for (int j = 0; j <  array2[i].length; j++)
....

別のことは、文字列を行に出力したい場合は、を使用しSystem.out.print、内側のループを終了するたびに'\n'文字を出力することです

于 2013-09-26T13:59:28.070 に答える
0

を使用printlnしているため、各文字がそれぞれの行に出力されます。print代わりに使用する必要があります。

での初期化に注意してください

new char [7][5];

内部配列が上書きされるため、期待どおりに機能しません。使用する

new char[7][]

同じ結果が得られますが、意図がより明確になります。ここ

for (int i = 0; i < 5; i++)
   for (int j = 0; j < 7; j++)

インデックスの順序を明らかに逆にしています: 5 つの外部配列のみを反復処理していますが、7 を割り当てています。代わりにすべきことは、ハードコーディングされた数値ではなく、実際の配列の長さに対してチェックすることです。結局のところ、内部配列は任意のサイズにすることができます (文字列の長さに依存します)。

于 2013-09-26T13:47:38.027 に答える