1

「Cat」を含む文字列がある場合、個々の charAt ケースに何かが存在するかどうかを事前に確認するにはどうすればよいですか。サンプルコードはこちら

    for (int i = 0; i < array.length; i++)
    {
        System.out.println();
        for (int j = 0; j < size; j++)
        {
            System.out.print(array[j].charAt(i) + " ");
        }
    }

i が 3 に達すると、範囲外の例外が発生します。空のスペースを印刷する方法はありますか?

編集:申し訳ありませんが、まったく明確ではありませんでした。縦に印刷されている文字列が複数あります。したがって、最大の文字列のサイズが 10 で、最小の文字列のサイズが 4 であると仮定します。各文字列の最初の 4 文字は正常に出力されます。しかし、5 番目の文字が存在しないため出力しようとすると、範囲外エラーが発生します。それを回避する方法はありますか?

4

2 に答える 2

7

あなたは間違った方法を持っています、それだけですij

あなたが持っている必要があります:

System.out.print(array[i].charAt(j) + " ");

array[i]また、コードをより堅牢にするために、事前定義されたsize変数ではなく、長さに達するまで内側のループを書き直す必要があります。

更新:文字列の配列を垂直方向に出力する場合 (つまり、各文字列が列に表示されるようにする場合)、コードは次のようになります。

for (int i = 0; i < size; i++)             // i is the loop variable for the character count, we'll print one line for each character
{
    for (int j = 0; j < array.length; j++) // for every string in the array
    {
        char c = ' ';                      // print out a space character by default to keep the columns aligned
        if ( array[j].length() > i )       // but if the array[j] still has characters left
            c = array[j].charAt(i);        // print that character instead
        System.out.print(c + " ");         // here
    }
    System.out.println();                  // and close the line
}
于 2012-04-03T20:29:28.893 に答える
1

個々のcharAtケースに何かが存在するかどうかを事前に確認するにはどうすればよいですか。

biziclop によって既に言及されているインデックス作成の問題に加えて、charAt.
つまり、これが機能するためにfor (int j = 0; j < size; j++)ここにsizeあるはずarray[j].length()です。

しかし、なぜわざわざループの反復を行うのでしょうか?
あなたはちょうどすることができますSystem.out.print(array[i] + " ");

于 2012-04-03T20:49:49.617 に答える