【问题标题】:How to close a while loop for an ArrayList that is collecting user input如何关闭收集用户输入的 ArrayList 的 while 循环
【发布时间】:2020-02-18 13:28:31
【问题描述】:

这个问题听起来很简单,但我花了 2 个小时寻找答案,但似乎找不到。我正在尝试制作一个程序,用用户输入(整数)填充数组列表,然后在输入数字 0 时关闭它。

到目前为止我有:

import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;
import java.util.*;
/**
 * Write a description of class ArrayList2 here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */

public class Numbers

{
    public static void main(String[] args)
    {
        Scanner keyboard = new Scanner(System.in);

        System.out.println ("Enter a list of integers (Enter 0 when done): ");

        ArrayList<Integer> fullArray = new ArrayList<Integer>();

        while (keyboard.hasNextInt())
        {
            fullArray.add(keyboard.nextInt());
            System.out.println (fullArray);


        }

        System.out.println (fullArray);
    }
}

我的问题不是获取用户输入,而是在键入 0 时关闭数组列表。我知道hasNextInt 返回true,只要他们的另一个int 但0 也是int,所以它不会关闭数组列表。我试过简单地说if(keyboard.nextInt == 0),但这会破坏我的代码,只会将所有其他数字添加到我的数组列表中。如果有人可以帮助我,将不胜感激。谢谢。

【问题讨论】:

  • 您需要将keyboard.nextInt() 的内容放入一个变量中,然后检查该变量的值,如果为0,则调用“break;”否则,您将变量的值放入数组中并像以前一样继续。

标签: java arrays loops arraylist while-loop


【解决方案1】:

不要添加一个新的nextInt(),这会让你跳过所有其他值,只需将你已经使用的nextInt存储到一个变量中(在本例中为nextValue),检查它是否是0 , break 如果是,则从循环中添加,否则将其添加到 List

这是下面的工作版本:

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);
    System.out.println ("Enter a list of integers (Enter 0 when done): ");
    ArrayList<Integer> fullArray = new ArrayList<>();

    while (keyboard.hasNextInt()) {
        int nextValue = keyboard.nextInt();
        if (nextValue == 0) {
            break;
        }
        fullArray.add(nextValue);
        System.out.println (fullArray);
    }
}

【讨论】:

  • 谢谢,不得不移动 fullArray.add(nextValue);进入while循环,因为它找不到局部变量,但否则我的程序现在可以工作。 :D
  • @Lioti 嗯,它应该已经在我编写的代码中的while 循环中了?很高兴它对你有用!
猜你喜欢
  • 1970-01-01
  • 2020-10-17
  • 1970-01-01
  • 2013-11-16
  • 2020-02-15
  • 2015-09-04
  • 1970-01-01
  • 2016-07-11
  • 1970-01-01
相关资源
最近更新 更多