将输入添加到列表中

时间:2017-11-07 07:59:50

标签: java list arraylist input collections

我正在尝试将用户的输入添加到列表中,然后以相反的顺序显示它。添加元素直到用户输入0.这是我的代码:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class InputInArrrayList{
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int a = s.nextInt();
        List<Integer> myList = new ArrayList<>();
        while(a > 0) {
            myList.add(a);
            if (a == 0){
                break;
            }
        }
        Collections.reverse(myList);
        System.out.println(myList);
    }
}

但是当它为0时循环不会中断。相反,它会抛出OutOfMemoryError:Java堆空间。我做错了什么?

4 个答案:

答案 0 :(得分:2)

执行中断所需的至少一个&gt; = 0:

swift3

答案 1 :(得分:1)

请更正你的循环

List<Integer> myList = new ArrayList<>();
while(true) {
    int a = s.nextInt();
    if (a == 0){
        break;
    }  else
        myList.add(a);
    }

答案 2 :(得分:1)

您的问题是以下代码:

while(a > 0) {
    myList.add(a);
    if (a == 0){
        break;
    }
}

正如您在阅读第一个用户输入并将其分配给a后所看到的那样,while循环无限运行。发生这种情况是因为a变量的条件参数永远不会改变 因此,您必须插入在while循环中更新该变量的代码部分。以下是一个简单的修复:

Scanner s = new Scanner(System.in);
int a = 1;
List<Integer> myList = new ArrayList<>();
while(a > 0) {
    a = s.nextInt();
    if (a == 0) {
        break;
    } else {
        myList.add(a);
    }        
}  

答案 3 :(得分:0)

目前,当你设置为第一个数字然后保持循环时,你进入一个无限循环,因此,不断向列表添加相同的数字。 你需要在while循环中添加。 int a = s.nextInt();