Java 当用户输入的数字小于0时,如何断开扫描仪? 问题

Java 当用户输入的数字小于0时,如何断开扫描仪? 问题,java,arrays,validation,java.util.scanner,Java,Arrays,Validation,Java.util.scanner,嘿,伙计们,我的问题是如何将扫描对象中的整数附加到数组中。需要注意的是,一旦整数小于0,扫描仪应停止获取整数值。换句话说,无论输入的数组有多长,一旦扫描仪检测到负值,它都应该停止接受整数值这个问题使用的是Java语言。 从那里,它应该打印出输入的数组 例如: 当输入为 12 22 23 25-1 它应在-1处立即停止扫描仪,并输出以下阵列: 12 22 23 24-1 我试过的 由于无法为标准数组指定固定大小的数组,因此我使用了一个数组列表,它可以自由地从scanner对象附加尽可能多的值。完

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

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


例如:

当输入为

12 22 23 25-1

它应在-1处立即停止扫描仪,并输出以下阵列:

12 22 23 24-1

我试过的 由于无法为标准数组指定固定大小的数组,因此我使用了一个数组列表,它可以自由地从scanner对象附加尽可能多的值。完成这一步后,我对输入的任何整数进行了简单的用户验证,如下所示:

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);
 }
publicstaticvoidmain(字符串[]args){
//启动扫描仪和新阵列
扫描仪scnr=新扫描仪(System.in);
ArrayList userValues=新的ArrayList();
系统输出打印(“输入数字:”);
//扫描仪读取整数时,将整数添加到数组列表中
while(scnr.hasnetint()){
添加(scnr.nextInt());
}
//打印出数组列表
System.out.println(用户值);
}

顶部的输入和输出如下所示。 输入

12345321 L

输出

[1,2,3,45,32,1]


这仅适用于基本整数验证,并停止向数组中输入字符串或其他数据类型。我似乎不知道如何停止scanner对象并存储整个阵列。以下代码是我尝试解决此问题的代码:

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);
}
publicstaticvoidmain(字符串[]args){
//启动扫描仪和新阵列
扫描仪scnr=新扫描仪(System.in);
ArrayList userValues=新的ArrayList();
布尔值isPositive=true;
系统输出打印(“输入数字:”);
//TODO:一旦用户输入小于0的值,就中断循环
while(序号hasNextInt()&&isPositive){
如果(序号nextInt()<0){
isPositive=假;
}否则{
添加(scnr.nextInt());
}
}
System.out.println(用户值);
}
在失败的尝试中,这不起作用,并给我奇怪的输出,我无法回过头来


输入

12345-1 -一,

输出

[23,-1]




非常感谢您的帮助。

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

while(scnr.hasNextInt() && isPositive) {
     int next = scnr.nextInt();
     if(next < 0) {
       isPositive = false;
     } else {
       userValues.add(next);
     }
   }
while(序号hasNextInt()&&isPositive){
int next=snr.nextInt();
如果(下一个<0){
isPositive=假;
}否则{
userValues.add(下一步);
}
}

您可以简化一点

Scanner scnr=新扫描仪(System.in);
ArrayList userValues=新的ArrayList();
系统输出打印(“输入数字:”);
//TODO:一旦用户输入小于0的值,就中断循环
while(scnr.hasnetint()){
int temp=scnr.nextInt();
如果(温度<0){
打破
}否则{
userValues.add(temp);
}
}
System.out.println(用户值);
}

在循环开始时检查-ve输入如何

    int val;
    while ((val = scnr.nextInt()) >= 0){
        userValues.add(val);
    }

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

要停止扫描仪并成功打印输出,基本上需要调用
if
语句并说:

if(num < 0){
--your condition---
}
if(num<0){
--你的情况---
}

注意:我以“num”为例,变量必须是scanner变量才能使扫描仪停止,否则,如果使用非scanner变量设置条件,扫描仪将不会停止

谢谢,这对我来说很有意义,对我更大的计划也很有效,我很感激这个家伙!
if(num < 0){
--your condition---
}