Java为用户输入重新编译,请尝试。。。抓住
因此,如果用户输入一个后缀值,比如说453-*,我的方法EvalPostFix()会起作用,但是当用户输入一些无效的东西,比如43*+或任何无效字符串时,希望程序重新编译用户的输入,但不知道如何使用try-catch实现 " “使用标志:Java为用户输入重新编译,请尝试。。。抓住,java,Java,因此,如果用户输入一个后缀值,比如说453-*,我的方法EvalPostFix()会起作用,但是当用户输入一些无效的东西,比如43*+或任何无效字符串时,希望程序重新编译用户的输入,但不知道如何使用try-catch实现 " “使用标志: boolean flag = false; while(!flag) { //make the loop break, if no exception caught flag = true; try{ } catch{
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循环。查看代码,我认为您只需要去掉in=getString()中的
在catch
块中选择code>,并在try块的末尾添加一个break
我不建议在您正在做的事情中使用while(true)
或IOException
,但这应该可以让您的代码正常工作。类似的东西可以用来获得所需规范的输入
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 ;
}
}
}
您应该避免对用户输入/输出使用异常。而是创建一个返回(布尔)结果或类似结果的验证函数。此外,抛出IOException并不是一个好主意,它可能是一个解析异常或类似的异常。永远不要使用while(true)
循环而不使用break
:)@owlstead仍然应该捕获用户输入,这些输入无法解析为预期的格式,这是通过异常处理最容易做到的嗯,是的,在这种情况下,您可以对输入执行简单的检查并处理解析器异常,我猜,为它重新创建另一个解析器是过分的。
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 ;
}
}
}