0

我试图了解收集用户输入和循环直到条件。我想循环扫描仪,直到用户输入 0,但是,我需要存储每个输入的整数,以便以后可以访问它。困难的部分是,我不能使用数组。

4

3 回答 3

0

在这里使用数组会有点棘手,因为您不知道用户将要输入的元素数量。一旦用户用尽了初始容量并复制现有的输入元素,您总是可以编写代码来创建一个容量更大的新数组,但使用List起来会容易得多。

    Scanner scanner = new Scanner(System.in);

    List<Integer> input = new ArrayList<>();
    int nextInt = Integer.MIN_VALUE;
    while((nextInt = scanner.nextInt()) != 0){
        input.add(nextInt);
    }

如果您真的想使用数组,请参阅此问题。答案解释了创建新数组和复制元素。Java动态数组大小?

于 2013-09-23T22:54:36.917 回答
0

只是你可以做类似的事情

List mylist = new ArrayList(); //in java. other wise you can create array[size]
int input = 1;
while(input!=0)
{
  /* input number from user here */

  if(input!=0)
  mylist.add(input);

}
于 2013-09-23T22:49:16.940 回答
0

这是一种循环用户输入直到0输入的简单方法。

Scanner console = new Scanner(System.in);
boolean loop = true;
String input;
while(loop) {
    input = console.nextLine();
    //Add input to a data structure
    if (input.equals("0")) {
        loop = false;
    }
}

至于将用户输入添加到数据结构中,您说您不能使用数组。ListSet怎么样。即使是堆栈队列也可以工作。您是否考虑过使用这些数据结构中的任何一种?

下面是一个使用 List 的基本示例:

List<String> aList = new ArrayList<String>();
aList.add(input);

这就是你可以使用堆栈的方式:

Stack<String> stk = new Stack<String>();
stk.push(input);

也许最有效的方法是使用 HashSet:

Set<String> set = new HashSet<String>();
set.add(input);
于 2013-09-23T22:51:47.710 回答