Java 如果数组超出边界,如何停止if语句?
我试图打印此数组中的所有数字,并将相等的相邻值括在括号中,但除非最后两个值相等,否则会出现java.lang.ArrayIndexOutOfBoundsException错误。我怎样才能解决这个问题 公共静态无效字符串[]args{ 随机兰德=新的随机; 整数骰子[]=新整数[20]; 布尔inRun=false; 对于int i=0;iJava 如果数组超出边界,如何停止if语句?,java,arrays,Java,Arrays,我试图打印此数组中的所有数字,并将相等的相邻值括在括号中,但除非最后两个值相等,否则会出现java.lang.ArrayIndexOutOfBoundsException错误。我怎样才能解决这个问题 公共静态无效字符串[]args{ 随机兰德=新的随机; 整数骰子[]=新整数[20]; 布尔inRun=false; 对于int i=0;i
for (int i = 0; i < dice.length; i++)
您的代码在这里有问题
if (!inRun) {
if (dice[i] == dice[i + 1]) {
System.out.print("(");
inRun = true;
}
}
我不知道你想做什么,但如果I=dice.length-1,I+1可以引发该异常 改变这种状况
if (dice[i] == dice[i + 1]) {
到
在数组的开始处具有相应的潜在异常;不过,这里不会出现异常,因为您最初并没有运行。添加i>0的检查可以防止出现这种情况
请注意,整个循环可以更容易地编写:
for (int i = 0; i < dice.length;) {
System.out.print("(");
do {
System.out.print(dice[i]);
} while (++i < dice.length && dice[i] == dice[i-1]);
System.out.print(")");
}
就这样。非常感谢你!编辑代码时,会在异常发生时移动数据。你不应该那样做。
if (dice[i] != dice[i - 1]) {
for (int i = 0; i < dice.length;) {
System.out.print("(");
do {
System.out.print(dice[i]);
} while (++i < dice.length && dice[i] == dice[i-1]);
System.out.print(")");
}