我知道如何要求用户输入正整数,但我不知道如何处理代码以避免输入错误,如十进制或字符串输入。
int seedValue;
double angle, gunpowder;
System.out.println("Please enter a positive integer seed value: ");
seedValue = input.nextInt();
while (seedValue <= 0) {
System.out.println("Please enter a positive integer seed value: ");
seedValue = input.nextInt();
}
System.out.println("That target is " +
threeDec.format(gen.nextDouble() * 1000) + "m away.");
答案 0 :(得分:8)
这可能是一个approch:
string
Scanner.readLine();
值阅读
Integer.parseInt
方法将字符串转换为int。如果输入字符串包含小数和无效数字,此方法将抛出NumberFormatException
。答案 1 :(得分:1)
System.out.println("Please enter a positive integer seed value: ");
boolean flag = true;
while(flag) {
try {
seedValue = Integer.valueOf(input.nextLine());
if (seedValue <= 0) {
System.out.println("input is not a positive Integer ");
System.out.println("Please enter a positive integer seed value: ");
} else {
flag=false;
}
} catch(NumberFormatException e) {
System.out.println("input is not a positive Integer ");
System.out.println("Please enter a positive integer seed value: ");
}
}
答案 2 :(得分:0)
我假设“输入”是Scanner类。如果是这样,请查看Scanner.nextInt()方法的javadoc。如果未输入整数,则会引发许多异常。所以你应该在try catch块中调用它并查找这些异常。接下来你可以做的就是让它们输入负值只是检查输入是否小于0,如果是,输出一些消息让用户知道它们只能输入正值。
答案 3 :(得分:0)
您的尝试看起来很好,您让用户输入内容,然后检查它是否与所需的表单匹配。如果没有,继续再次询问用户或输出错误或其他。如果你想以某种方式制作程序,那些字母,比如' - '字符在输入时甚至不会出现在屏幕上,你仍然必须阅读用户键入的内容,验证它,改进字符串(删除非法字母)并在每次发生单击时刷新屏幕。这可能不是应该在这里做的。
想象一下您的常见社交网站,同时创建一个包含密码要求的个人资料,例如一个号码,至少6个字母等等。您可以在文本框中键入任何内容,只有在提交表单后,程序才接受您的输入或将您重定向到同一表单并显示错误消息以提示问题。
答案 4 :(得分:0)
我不确定哪个类input
是完全正确的,但我假设其Scanner
读取标准值。如果是这种情况,您可以利用nextInt()
抛出的异常,特别是InputMismatchException
。你的代码是 -
int seedValue;
double angle, gunpowder;
System.out.println("Please enter a positive integer seed value: ");
while(invalidInput){
try{
seedValue = input.nextInt();
if(seedValue <= 0) {
System.out.println("Please enter a positive integer seed value: ");
}
else{invalidInput=false;}
}
catch(InputMismatchException e){
System.out.println("Please enter a positive integer seed value: ");
}
}
System.out.println("That target is " +
threeDec.format(gen.nextDouble() * 1000) + "m away.");