Java 当用户输入的数字小于0时,如何断开扫描仪? 问题
嘿,伙计们,我的问题是如何将扫描对象中的整数附加到数组中。需要注意的是,一旦整数小于0,扫描仪应停止获取整数值。换句话说,无论输入的数组有多长,一旦扫描仪检测到负值,它都应该停止接受整数值这个问题使用的是Java语言。 从那里,它应该打印出输入的数组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对象附加尽可能多的值。完
例如: 当输入为 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---
}