一旦用户输入小于0的数字,如何断开扫描仪?

问题描述 投票:0回答:1

问题

[伙计们,我的问题是弄清楚如何将扫描仪对象中的整数附加到数组中。需要注意的是,一旦整数小于0,扫描仪应停止获取整数值。换句话说,无论输入数组有多长,一旦扫描仪检测到负值,扫描仪都应停止获取整数值。 此问题使用的是Java语言。

从那里,它应该打印出输入的数组。

示例:

当输入为]时>

12 22 22 23 25 -1

它应该立即将扫描仪停止在-1并输出以下数组:

12 22 22 23 24 -1

我尝试过的内容

由于无法为标准数组分配固定大小的数组,所以我使用了数组列表,它可以自由地从扫描程序对象中附加尽可能多的值。一旦确定了这一步骤,便对所有输入的整数进行了简单的用户验证,如下所示:

public static void main(String[] args) {
   //  Initiate scanner and a new array
   Scanner scnr = new Scanner(System.in);
   ArrayList<Integer> userValues = new ArrayList<Integer>();

   System.out.print("Enter numbers: ");

   //  While the scanner reads an integer, add integers to the array list
   while (scnr.hasNextInt()) {
      userValues.add(scnr.nextInt());
   }

   //  Print out the array list
   System.out.println(userValues);
 }

顶部的输入和输出将是这样。输入

1 2 3 45 32 1L

输出

[1、2、3、45、32、1]

这仅适用于基本整数验证,并且停止在数组中输入字符串或其他数据类型。我似乎无法弄清楚如何停止扫描程序对象并存储整个数组。以下代码是我尝试解决的问题:

public static void main(String[] args) {
   //  Initiate scanner and new array
   Scanner scnr = new Scanner(System.in);
   ArrayList<Integer> userValues = new ArrayList<Integer>();
   boolean isPositive = true;

   System.out.print("Enter numbers: ");

   //  TODO: Once the user enters a value less than 0, break the loop
  while(scnr.hasNextInt() && isPositive) {
     if(scnr.nextInt() < 0) {
       isPositive = false;
     } else {
       userValues.add(scnr.nextInt());
     }
   }
   System.out.println(userValues);
}

在失败的尝试中,这不起作用,并且给了我奇怪的输出,我无法忍受。

输入

1 23 45 -1-1

输出

[[23,-1]

感谢您的帮助。

问题大家好,我的问题是弄清楚如何将扫描仪对象中的整数附加到数组中。需要注意的是,一旦整数小于...

java arrays validation java.util.scanner
1个回答
0
投票

您两次调用nextInt,因此它将添加下一个int并跳过一个。而是将其存储在变量中。

© www.soinside.com 2019 - 2024. All rights reserved.