【发布时间】:2012-04-08 13:47:04
【问题描述】:
当我测试这段代码时,它给了我 java.lang.ArrayIndexOutOfBoundsException: 2 代码还没有完成,但这是我想要做的: 一个要求用户输入两个数字的程序。打印较小的所有数字 以随机顺序将数字变为较大的数字(包括)。使用这个顺序,找到 相邻的两个数的最大和。 有人可以向我指出需要修复的内容以及如何修复它吗?谢谢。
boolean isNum = false;
int in1 = 0;
int in2 = 0;
int size = 0;
int largestsum = 0;
while (!isNum) {
try {
System.out.print("Enter a number: ");
in1 = Integer.parseInt(in.readLine());
boolean isSame = false;
while (!isSame) {
System.out.print("Enter a number: ");
try {
in2 = Integer.parseInt(in.readLine());
if (in1 != in2) {
isSame = true;
} else {
System.out.println("Same number.");
}
} catch (NumberFormatException nfe) {
System.out.println("Not a number.");
}
}
isNum = true;
} catch (NumberFormatException nfe) { //catches error
System.out.println("Not a number."); //informs user of the error
}
}
if (in1 > in2) {
size = in1 - in2 + 1;
int[] num = new int[size];
for (int i = 0; i < size; i++) {
num[i] = in2 + i;
}
int[] order = new int[size];
boolean[] used = new boolean[size];
for (int i = 0; i < size; i++) {
int r = (int) ((size) * (Math.random()));
while (used[r]) {
r = (int) ((size) * Math.random());
}
order[i] = r; //fill array
used[r] = true; //r is now used
}
for (int i = 0; i < size; i++) {
if (num[order[i]] + num[order[i + 1]] > largestsum) {
largestsum = num[order[i]] + num[order[i + 1]];
}
}
【问题讨论】:
标签: java arrays for-loop while-loop boolean