因此,如果用户输入像453- *这样的后缀值,我的方法EvalPostFix()可以完成工作,但是当用户输入无效的东西(如43 * +)或任何无效字符串时,程序需要重新命名用户输入不知道如何用try catch实现..
String in;
while(true){
System.out.println("Please enter the numbers first followed by the operators, make sure to have one less operator than of numbers");
try {
in = getString();
int result = EvalPostFix(in);
System.out.println(result);
} catch (IOException e) {
// TODO Auto-generated catch block
String s = "Not a valid postfix string";
e.toString();
in = getString();
}
}
答案 0 :(得分:2)
查看您的代码我认为您只需要摆脱in = getString();
块中的catch
并在try块的末尾添加break
。
我不建议您使用while(true)
或IOException
来处理您的工作,但这应该可以让您的代码正常运行。
答案 1 :(得分:0)
使用标志:
boolean flag = false;
while(!flag)
{
//make the loop break, if no exception caught
flag = true;
try{
}
catch{
//make the loop repeat
flag = false;
}
}
这应该在每次捕获异常时重复提示。您也可以使用它来验证输入。
旗帜的定位取决于您的偏好。我喜欢在发生错误时标记为true;)
一旦获得有效输入,这也会打破你的while循环。
答案 2 :(得分:0)
这样的东西可以用来获得所需规格的输入
public static void userMove() {
System.out.println("Where would you like to move? (R, L, U, D)\n");
Scanner input = new Scanner(System.in) ;
while (true){
String userInput = input.next() ;
if(userInput.length()>1){
System.out.println("Please input a valid direction");
}else{
break ;
}
}
}