0

因此,如果用户输入像 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();
        }
    }

'

4

3 回答 3

2

查看您的代码,我认为您只需要摆脱块in = getString();中的 并在try 块的末尾catch添加一个。break

我不建议您使用 awhile(true)或 anIOException来完成您正在做的事情,但这应该可以让您的代码正常工作。

于 2013-10-12T22:30:58.407 回答
0

使用标志:

boolean flag = false;
while(!flag)
{
//make the loop break, if no exception caught
flag = true;
    try{

    }
    catch{
       //make the loop repeat
       flag = false;
    }
 }

这应该在您每次捕获异常时重复提示。您还可以使用它来验证输入。

标志的方向取决于您的偏好。我喜欢在发生错误时标记为真;)

一旦你得到一个有效的输入,这也会打破你的 while 循环。

于 2013-10-12T22:28:59.660 回答
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 ;
         }
     }
 }
于 2018-02-25T15:01:07.847 回答