我正在尝试学习try-catch使用并且必须验证输入,以便用户必须输入1或2才能继续该程序。我相信我很接近,但如果用户输入错误的内容,例如'3'或'2.12',似乎无法让程序继续运行。
这就是我所拥有的:
n >= 1
答案 0 :(得分:2)
我不一定认为将<script type="text/javascript">
$(function() {
$("#form-search").submit(function(e) {
e.preventDefault();
str = $('#input-search').val();
url = "<?php echo base_url('questions/tagged/');?>" + str.replace(/\s/g, "-");
window.location = url + '/';
});
});
</script>
用于您的用例。相反,如果输入与您的预期不符,您可以记录错误并提示用户再次输入。
但如果输入不是实际整数,InputMismatchException
可以抛出异常。在您的原始代码中,您实际上从未使用此调用的结果,但我在答案中已经这样做了。在这种情况下,使用try-catch块可能是有意义的。
[Integer#parseInt()][1]
答案 1 :(得分:1)
你应该把你的条件中的throw语句放入你的catch语句中获取错误,代码应该是这样的:
String input = " ";
try {
Scanner scan = new Scanner(System.in);
input = scan.next();
Integer.parseInt(input);
if (!input.equals("1") && !input.equals("2")) {
System.out.println();
System.out.println("Invalid imput! Please select '1' or '2':");
throw new InputMismatchException ();
}
} catch (InputMismatchException a) {
System.out.println();
System.out.println("Invalid imput! Please select '1' or '2':");
}
答案 2 :(得分:0)
代码需要正整数,但可以输入字符串并再次循环,直到得到正整数输入值。
Scanner scanner = new Scanner(System.in);
Integer expectedOutput = -1;
public Integer getInputNumber(){
boolean valid;
String inputData;
do {
System.out.print("Enter Input Number: \t");
try {
inputData = scanner.nextLine();
// expecting positive integers
if (Integer.parseInt(inputData) > 0) {
expectedOutput = Integer.parseInt(inputData);
valid = true;
} else {
System.out.println("Invalid Input!");
valid = false;
}
} catch (Exception ex){
valid = false;
}
} while(!valid);
return expectedOutput;}