我想从
的for中获取stdin的输入3
10 20 30
第一个数字是第二行中的数字量。这就是我得到的东西,但它停留在while循环中...所以我相信。我在调试模式下运行,数组没有分配任何值......
import java.util.*;
public class Tester {
public static void main (String[] args)
{
int testNum;
int[] testCases;
Scanner in = new Scanner(System.in);
System.out.println("Enter test number");
testNum = in.nextInt();
testCases = new int[testNum];
int i = 0;
while(in.hasNextInt()) {
testCases[i] = in.nextInt();
i++;
}
for(Integer t : testCases) {
if(t != null)
System.out.println(t.toString());
}
}
}
答案 0 :(得分:10)
这与病情有关。
in.hasNextInt()
它可以让你保持循环,然后经过三次迭代后,我就会' i' value等于4,testCases [4]抛出ArrayIndexOutOfBoundException。
执行此操作的解决方案可能是
for (int i = 0; i < testNum; i++) {
*//do something*
}
答案 1 :(得分:2)
更新您的时间以仅读取所需的数字,如下所示:
while(i < testNum && in.hasNextInt()) {
&& i < testNum
中添加的附加条件while
将在您读取与您的数组大小相当的数字后停止读取数字,否则它将无效,您将获得ArrayIndexOutOfBoundException
时数组testCases
已满,即您已阅读testNum
个数字。