Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java为用户输入重新编译,请尝试。。。抓住_Java - Fatal编程技术网

Java为用户输入重新编译,请尝试。。。抓住

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{

因此,如果用户输入一个后缀值,比如说453-*,我的方法EvalPostFix()会起作用,但是当用户输入一些无效的东西,比如43*+或任何无效字符串时,希望程序重新编译用户的输入,但不知道如何使用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 ;
         }
     }
 }