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) + " ");
        }
    }

一旦我达到 3,你会得到一个越界异常。有没有办法打印一个空白空间?

编辑:对不起,我根本不清楚。有多个垂直打印的字符串。所以假设最大的字符串大小为 10,最小的大小为 4。每个字符串的前四个字符打印正常。但是当第五个字符不存在时,会出现越界错误。有什么办法吗?

4

2 回答 2

7

你有i错误j的方法,仅此而已。

你应该有:

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 回答