Java 尝试提示其输入时,输入值保持为0
我试图用用户输入的值提示用户,如果不是整数,则会显示错误消息。当我尝试提示他们时,当输入为双精度或字符串时,他们的输入保持为0Java 尝试提示其输入时,输入值保持为0,java,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 p
//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
来计算错误值
字符串s;
//解析输入,显示值
//并提示用户其输入不是int
试一试{
s=input.next();
System.out.println(“输入值为”+s);
inputNum=Integer.parseInt(s);
}捕获(数字格式){
System.out.println(s+“不是整数”);
}
}
}
好吧,这是一个概念(“向用户询问一些输入,不断询问它是否无效”),您可能想做不止一次,因此它没有任何主要的业务
给它自己的方法
此方法将接受一个“提示”作为输入,并返回一个数字。其目的是要求用户(在提示下)输入一个数字,并一直询问,直到用户输入一个为止
您可以使用
while()
循环代码直到满足某个条件,或者干脆永远使用return
一次跳过循环和整个“向用户索要数字”方法。我修改了代码,使其能够根据您的需要工作:
publicstaticvoidmain(字符串[]args){
//实例化用于用户输入的新扫描仪
扫描仪输入=新扫描仪(System.in);
//解析输入,显示值
//并提示用户其输入不是int
字符串inputNum=input.next();
试一试{
System.out.println(“输入的值为”+
整数.parseInt(inputNum));
}捕获(数字格式){
System.out.println(“输入的值为”+
输入数);
System.out.println(inputNum+“不是整数”);
}
}
以上是java中检查字符串是否为整数的标准方法。如果您想要一种更简单、功能更强大的方法,可以利用该库:
publicstaticvoidmain(字符串[]args){
扫描仪输入=新扫描仪(System.in);
最终字符串num=input.next();
//检查num是否是一个数字
if(可治疗的红土数(num)){
System.out.println(“输入值为”+num);
}否则{
System.out.println(“输入值为”+num);
System.out.println(num+“不是数字”);
}
}
请注意,numberrutils\iscreated
检查各种数字格式(整数、浮点、科学…)
如果您想要与
Integer#parseInt
、Long#parseLong
、Float#parseFloat
或Double#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.");
}
}
其中
inputNum
声明在哪里?在我的主方法上方是publicstatic int=inputNum代码>。