我正在用java编写一个程序,要求用户输入一系列数字,例如1 2 3 4 ..
,直到用户决定停止并按回车键。通常我会做的是这样的事情
Scanner scan = new Scanner (System.in);
int[] array = new int[i];
for (int x = 0; x < i; ++x)
{
array[i] = scan.nextInt();
}
问题是,在大多数情况下,我会有一个设定值。例如,我会问要输入多少个数字或类似的数字,这些数字将被存储到i中。在这种情况下,我没有开始的设定值。用户应该能够输入他/她想要的数量。有什么建议吗?
我试过这个,我知道它的问题是它永远不会退出循环,但也许我在正确的轨道或其他东西所以我会在这里发布它。
for (int i = 0; i < x; i++, x++)
{
numbers[i] = scan.nextInt();
numbers = new double[x];
}
答案 0 :(得分:2)
听起来你说你只想让他们一次点击进入,知道什么时候完成。
如果是这种情况,您可以将其输入保存为字符串,然后使用
.split(" ");
这会将String分解为由空格分隔的字符串数组。
在此之后,您可以将字符串数组解析为Int数组。
答案 1 :(得分:1)
也许数组并不是你想要的。看看Java Collections。
在这种情况下,最明智的是List。 List接口有几种实现方式,每种方式都有各自的优缺点(不同操作的时间复杂度)。这也是阅读这些内容的好机会:)。
答案 2 :(得分:1)
ArayList<Integer> nums = new ArrayList<Integer>();
nums.add(userInput);
ArrayLists自动增加大小,因此您不必设置大小。
要获取值,您可以使用get(index)
。
int n = nums.get(0);
答案 3 :(得分:1)
您需要使用集合。例如:
Scanner scan = new Scanner (System.in);
ArrayList<Integer> numbers = new ArrayList<Integer>();
while(true){
int number = scan.nextInt();
if(number == -1)
break;
numbers.add(number);
}
此外,您还需要一种方法让用户停止输入数字。对于此示例,当用户为数字键入-1时,将停止输入。根据您的情况更改该条件。
答案 4 :(得分:0)
如上所述,您可以使用其中一个动态集合,然后使用
转换为数组 int[] arr = list.toArray(new int[0]);
另请注意,该扫描仪为very slow。使用BufferedStreams有几种解决方案可以实现更好的性能。上面有一篇文章。