当尝试提示他们输入时,输入值保持为0

  • 本文关键字:提示 他们 java
  • 更新时间 :
  • 英文 :


我试图用用户输入的值来提示用户,如果不是整数,则会显示一条错误消息。当我尝试提示他们时,当输入是双精度或字符串时,他们的输入保持为0。

//main method
public static void main(String[] args) {
int i = 0;
//instantiate new Scanner for user input 
Scanner input = new Scanner(System.in);
//parse imput, display value 
//and prompt user that their input is not a int   
try {
inputNum = Integer.parseInt(input.next());
System.out.println("Value entered is " + 
String.valueOf(inputNum));      
} catch(NumberFormatException e) {
System.out.println("Value entered is " + 
String.valueOf(inputNum));
System.out.println(String.valueOf(inputNum) + " is not an integer.");
}
}
}

如果输入是双精度或字符串,则parseInt将引发异常,并且inputNum不会被分配任何新值。您可以在将input.next()传递给parseInt之前将其存储在字符串中,也可以在catch块中使用e来计算错误值

String s;
//parse imput, display value 
//and prompt user that their input is not a int   
try {
s = input.next();
System.out.println("Value entered is " + s);
inputNum = Integer.parseInt(s);
} catch(NumberFormatException e) {
System.out.println(s + " is not an integer.");
}
}
}

好吧,这是一个你可能想做多次的概念("询问用户一些输入,不断询问它是否无效"(,所以它基本上没有任何意义。

给它自己的方法。

此方法将使用"prompt"作为输入,并返回一个数字。目的是向用户(通过该提示(询问一个号码,并一直询问,直到他们输入一个号码。

您可以使用while()来循环代码,直到满足某个条件,或者简单地永远使用return来一次性退出循环和整个"向用户请求数字"方法。

我已经修改了代码,使其能够根据您的需要工作:

public static void main(String[] args) {
//instantiate new Scanner for user input
Scanner input = new Scanner(System.in);
//parse imput, display value
//and prompt user that their input is not a int
String inputNum = input.next();
try {
System.out.println("Value entered is " +
Integer.parseInt(inputNum));
} catch (NumberFormatException e) {
System.out.println("Value entered is " +
inputNum);
System.out.println(inputNum + " is not an integer.");
}
}

以上是在java中检查String是否为整数的标准方法。如果你想要一个更简单的&利用Apache Commons库的强大方法:

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
final String num = input.next();
// check to see if num is a number
if (NumberUtils.isCreatable(num)) {
System.out.println("Value entered is " + num);
} else {
System.out.println("Value entered is " + num);
System.out.println(num + " is not a number.");
}
}

请注意,NumberUtils#isCreatable检查各种数字格式(整数、浮点、科学…(如果您想要与Integer#parseIntLong#parseLongFloat#parseFloatDouble#parseDouble等效的东西。请改用NumberUtils#isParsable

还有一种不抛出任何异常的简洁方法,可以使用hasNextInt()预先验证输入值是否为有效整数,然后使用nextInt()读取整数而不解析字符串:

public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int inputNum;
if(scanner.hasNextInt()){
inputNum = scanner.nextInt();
System.out.println("Value entered is " + inputNum);
}else{
System.out.println(scanner.next() + " is not an integer.");
}
}

相关内容

最新更新