Java 尝试提示其输入时,输入值保持为0

Java 尝试提示其输入时,输入值保持为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

我试图用用户输入的值提示用户,如果不是整数,则会显示错误消息。当我尝试提示他们时,当输入为双精度或字符串时,他们的输入保持为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
来计算错误值

字符串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