ArrayList与扫描仪无法正常工作
此代码应该在ArrayList
中存储整数,并在输入数字42时退出,但它不起作用。有时循环不停止42时提供,有时不存储输入所有数字之前42ArrayList与扫描仪无法正常工作
import java.util.*;
class test{
public static void main(String[] args){
ArrayList<Integer> ar = new ArrayList<Integer>();
Scanner sc = new Scanner(System.in);
while(sc.nextInt() != 42){
ar.add(sc.nextInt());
}
for(int i : ar){
System.out.println(i);
}
}
}
输出:
C:\Users\pj\Desktop\j2\new>java test
1
2
3
5
42
2
5
while(sc.nextInt() != 42){
ar.add(sc.nextInt());
}
您在阅读每两个整数迭代,所以有可能你正在读循环内的42个,因此当你读它时你不会停下来。
尝试将其更改为:
int i = 0;
while((i = sc.nextInt()) != 42){
ar.add(i);
}
谢谢,有没有其他办法可以完成任务?我没有看到其他出路。 – PankajKushwaha 2014-10-16 19:17:25
@PankajKushwaha您是否尝试过我在我的回答结尾处建议的代码? – Eran 2014-10-16 19:18:15
非常感谢先生,我现在看到了代码。更新和它working.I没有足够的积分upvote :( – PankajKushwaha 2014-10-16 19:22:48
这三行引起的问题;你问用户输入两次
while(sc.nextInt() != 42){
ar.add(sc.nextInt());
}
你应该值存储到一个变量,像这样
int n = sc.nextInt();
while (n != 42) {
ar.add(n);
n = sc.nextInt();
}
希望帮助:)
它总是更好(对我来说)存储' nextSomething'处理它之前的对象。 – seteropere 2014-10-16 19:40:22
当然,我会牢记这一点。谢谢。 – PankajKushwaha 2014-10-16 19:56:58