Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果数组超出边界,如何停止if语句?_Java_Arrays - Fatal编程技术网

Java 如果数组超出边界,如何停止if语句?

Java 如果数组超出边界,如何停止if语句?,java,arrays,Java,Arrays,我试图打印此数组中的所有数字,并将相等的相邻值括在括号中,但除非最后两个值相等,否则会出现java.lang.ArrayIndexOutOfBoundsException错误。我怎样才能解决这个问题 公共静态无效字符串[]args{ 随机兰德=新的随机; 整数骰子[]=新整数[20]; 布尔inRun=false; 对于int i=0;i

我试图打印此数组中的所有数字,并将相等的相邻值括在括号中,但除非最后两个值相等,否则会出现java.lang.ArrayIndexOutOfBoundsException错误。我怎样才能解决这个问题

公共静态无效字符串[]args{ 随机兰德=新的随机; 整数骰子[]=新整数[20]; 布尔inRun=false; 对于int i=0;i为什么要迭代到dice.length+1,它肯定会给出IndexOutOfBound,所以应该使用
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(")");
}