当我尝试运行下面的代码时,我得到了
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 7
at java.lang.String.charAt(String.java:658)
at main.main(main.java:27)
Java结果:1
我仍然需要添加最高价值和最低价值的东西。 该程序必须通过字符串。我在下面使用的方法, 不是来自任何其他地方,我只是那样做,但老师暗示使用循环。有什么建议?我想这可能是因为数组中的垃圾。
int highValue,lowestValue,sum;
int random;
int check, otherCheck;
int a = 0,b = 0,c = 0,d = 0,e = 0;
String passingRandomIn;
//Create a object that generates a random number 4-8
Random ran = new Random();
//Generates a random number between 4 and 8
random = ran.nextInt(5)+4;
//Sets the randomly generated number equal to check and other check
check = random;
otherCheck = random;
//Declare an array of 5 characters[0-4] inclusive
char[] myCharArray = new char[4];
//To string
passingRandomIn = Integer.toString(random);
//Pass in the random numbers(character per character from the string)
switch(check){
case 8: myCharArray[4] = passingRandomIn.charAt(4);
check--;
case 7: myCharArray[3] = passingRandomIn.charAt(3);
check--;
case 6: myCharArray[2] = passingRandomIn.charAt(2);
check--;
case 5: myCharArray[1] = passingRandomIn.charAt(1);
check--;
case 4: myCharArray[0] = passingRandomIn.charAt(0);
break;
}
//Add the array of characters to an array of integers
switch(otherCheck)
{
case 8: a = Character.getNumericValue(myCharArray[4]);
case 7: b = Character.getNumericValue(myCharArray[3]);
case 6: c = Character.getNumericValue(myCharArray[2]);
case 5: d = Character.getNumericValue(myCharArray[1]);
case 4: e = Character.getNumericValue(myCharArray[0]);
break;
}
sum = a + b + c + d + e;
System.out.println(sum);
}
}
答案 0 :(得分:2)
random = ran.nextInt(5)+4;
将始终生成一位数字,并且您尝试访问该字符串的passingRandomIn.charAt(4)
,这是StringIndexOutOfBoundsException
如果你想使用random = ran.nextInt(5)+4;
,那么你只能使用passRandomIn.charAt(0),因为你的字符串长度将为1
答案 1 :(得分:1)
//Declare an array of 5 characters[0-4] inclusive
char[] myCharArray = new char[4];
评论和代码不匹配。您使用new char[4]
分配四个字符数组。您应该将其更改为new char[5]
。请注意,此处使用的数字是数组的大小,而不是您似乎假设的最终索引。
答案 2 :(得分:0)
由于您只创建了一个4元素数组
,因此该索引不存在于您的数组中案例8:myCharArray [4] = passingRandomIn.charAt(8);