如果我有一个包含“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.每个字符串的前四个字符打印正常。但是当第五个char尝试打印时会发生越界错误,因为它不存在。有没有办法解决这个问题?答案 0 :(得分: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
}
答案 1 :(得分:1)
如果每个人都有任何东西,我怎么能事先检查 特例。
除了biziclop已经提到的索引问题之外,您还必须在执行charAt
之前检查字符串的大小。
我的意思是for (int j = 0; j < size; j++)
此处size
应为array[j].length()
才能实现此目的。
但为什么要烦恼循环迭代呢?
你可以System.out.print(array[i] + " ");