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)または anを使用することはお勧めしませんが、コードが機能するはずです。IOException

于 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;
    }
 }

これにより、例外をキャッチするたびにプロンプ​​トが繰り返されます。これを使用して入力を検証することもできます。

フラグの向きは好みによって異なります。エラーが発生したときに true をフラグするのが好きです ;)

これにより、有効な入力が得られるとすぐに while ループも中断されます。

于 2013-10-12T22:28:59.660 に答える