当前位置: 首页 > 知识库问答 >
问题:

如何将不同长度的扫描仪用户输入添加到ArrayList?

郭俊人
2023-03-14

我试图构建一个通过扫描仪构建的整数ArrayList。用户必须输入5到10个整数才能使ArrayList有效,但在运行程序时,实际输入数将是未知的。

如何构建程序,使其只在用户输入5、6、7、8、9或10个整数时运行?

public static ArrayList arrayListBuilder() {
    Scanner input = new Scanner(System.in);
    ArrayList<Integer> integerList = new ArrayList();
    System.out.println("Enter 5-10 ints");
    while (input.hasNextInt()) {
        integerList.add(input.nextInt());
        if (integerList.size() > 4 && integerList.size() < 9) {
            break;
        }
    }
    return integerList;
}

共有1个答案

滕令雪
2023-03-14

你的问题在你的if语句中。看起来您试图确保用户的输入大于4个Int,小于9个Int.然而,在实际中发生的情况是,您一次读取用户输入的一个int值,一旦您的用户输入数组大于4,您就停止。如果您想保持大致相同的格式,您可以尝试一些事情。将下界的检查移到while循环之外,这样程序将填充数组列表,然后检查它是否足够大。如果它不够大,则循环备份。然后在while循环中保持对上限的检查。我相信这将完成你正在努力做的事情。我已经附上了可能有所帮助的示例代码。

    public static ArrayList arrayListBuilder() {
        Scanner input = new Scanner(System.in);
        ArrayList<Integer> integerList = new ArrayList();
        while (true){
            integerList.clear();
            System.out.println("Enter 5-10 ints");
            Boolean rightSize = true;
            while (input.hasNextInt()) {
                integerList.add(input.nextInt());
                if (integerList.size() > 9) {
                    rightSize = false;
                    break;
                }
            }
            if (integerList.size() < 5){
                rightSize = false;
            }
            if (rightSize){
                break;
            }
        }
        return integerList;
    }
 类似资料:
  • 我正在创建一个用于处理用户输入的类。这样,在其他项目中,我可以从类中调用方法,而不必担心在每个新项目中创建扫描程序。 类中将有一个单独的方法来处理不同的变量类型(float、int、String等)。我从浮动类型开始: 这个方法工作得很好,只是它必须在else部分返回一个float。在本例中,它是一个零,因此当输入到计算器(例如)时,零会导致任何输出等于零。 有没有返回空浮点值的方法来克服这个问题

  • 问题内容: 对于Java练习,我试图创建一个程序,该程序从键盘读取整数,直到输入负数为止。 并打印整数的最大值和最小值,而忽略负数。 一旦运行,是否可以在同一程序中进行连续输入?我必须每次都继续运行该程序以输入数字。 任何帮助,将不胜感激 这是我的代码的一部分-它可以工作,但是我认为有一种更简单的方法可以执行我想要的操作,但不确定如何操作! 问题答案:

  • 对于java实践,我正在尝试创建一个程序,从键盘读取整数,直到输入负数。 它打印整数的最大值和最小值,忽略负数。 是否有一种方法可以在同一个程序运行后继续输入?每次输入一个数字,我都要继续运行程序。 任何帮助将不胜感激 这是我的代码的一部分-它可以工作,但我认为有一种更简单的方法可以做我想做的事情,但不确定如何做!

  • 我开发了一个字符排序器,我想每次字符串排序后提示用户输入一个新的字符串。我遇到的问题是扫描仪一直在扫描用户的第一个输入。如果我使用scanner.next(),它不会计算输入末尾的空白,这不是解决方案。 这是while循环的开始。一旦代码完成,它将再次从“inputtext”开始。

  • 问题内容: 因此,我是一名新Java程序员,我试图弄清楚为什么一段代码无法正常工作。我遇到的问题是:“字符串兴趣= input.nextLine();”,它跳过了用户的输入并跳至下一个System.out,因此它仅在控制台中显示“您的个人资料…”在允许用户输入任何数据之前。抱歉,这是一个愚蠢的问题,我很新! 问题答案: 这样说: 其余代码可能与您上面的代码相同。 编辑: 它必须是这样的(我的意思是

  • 问题内容: 我正在尝试让扫描仪在循环中进行输入。一旦用户想要完成操作,他就可以退出此循环。我尝试了许多不同的方法来执行此操作,但始终存在一些问题。这是代码: 上面代码的问题(在我尝试的其他方法上也会发生)是,当用户键入 Y时 ,将跳过名字的第一个输入,并跳转到姓氏。如果用户键入 N, 则循环将正确停止。有人可以解释发生这种情况的原因,以及如何克服使用课堂的问题? ps:执行类似的操作,将导致循环终