用户如何在java中输入任意长度的数组?

时间:2013-11-18 08:43:47

标签: java arrays

我正在用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];                    
}

5 个答案:

答案 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有几种解决方案可以实现更好的性能。上面有一篇文章。