用户输入数量未知时如何使用定长数组

时间:2019-05-19 03:14:26

标签: java arrays java.util.scanner

我有一个任务,我应该在其中接受用户输入的项目,数量和成本。用户可以输入任意数量的项目。我的问题是作业说:

输入:使用循环使用java.util.Scanner从控制台收集用户输入,并将输入放入固定长度的数组中。

让我感到震惊的部分是,当我不知道会有多少用户输入时,我不知道如何设置数组的长度。我已经搜索了答案,但没有找到任何答案,或者如果找到答案,它就没有点击我。我希望有一个简单的解决方案示例,其中可以将未知数量的输入输入到数组中。

3 个答案:

答案 0 :(得分:0)

您可以使用ArrayList <>,它与简单数组几乎相同,但是没有固定长度。如果您将“定长”(fixed-length)作为任务的一部分,则可以在填充完当前数组后将数组复制到新数组中,并且将数组大小翻倍。

答案 1 :(得分:0)

您可以尝试将数组长度设为i。输入其他内容时,请输入新的数组长度i + 1,以便为其他输入留出空间。您可以在每次进行其他输入时继续增加一个空间

答案 2 :(得分:0)

我在这里假设输入将仅是整数形式,并且用户以整数形式提供项目,数量和成本。在那种情况下,我们可以使用list来存储用户输入,然后,我们可以使用固定长度的数组来存储所有输入。

    Scanner sc = new Scanner(System.in);
    ArrayList<Integer> list=new ArrayList<>();  
    while(sc.hasNext()){
        list.add(sc.nextInt());
    }
    int[] store = new int[list.size()];
    int k=0;
    for(int i:list){
        store[k++]=i;
    }

(如果用户以字符串格式提供输入,则只需将sc.nextInt()更改为sc.nextLine(),然后使用substring()即可提取所有输入。)

例如, 1 10 100 2 20 200 ----------列表将存储所有这6个值,然后创建大小为6的数组。