1

以下は私のJavaコードです。1ユーザーがメソッドと等しくない数値を入力するgetInput()と、再度呼び出されます。

public void getInput(){
int i=0;
    while(i<=4){
        result[i] = Integer.parseInt(JOptionPane.showInputDialog("Enter Result (1 = pass, 2 = fail)"));
        int res = result[i];
        if(res!=1){
            JOptionPane.showMessageDialog(null,"Wrong input, please try again!");
            System.out.println("Wrong Input:" + res);
            getInput();
        }
        System.out.println("count:"+i);
        i=i+1;
    }
}

以下は、コードによって生成された結果です

  • count:0 <- 0 からカウントを開始します
  • カウント:1
  • 間違った入力:2 <- 間違った入力を入力し、メソッドgetInput()を再度呼び出します。
  • count:0 <- 0 からカウントを開始します
  • カウント:1
  • カウント:2
  • カウント:3
  • カウント:4
  • count:2 <- 2 から再開
  • カウント:3
  • カウント:4

問題は、カウンターが正しく機能していないことです。誰かがこの問題を解決するのを手伝ってくれますか?なぜこれが起こっているのですか?

4

2 に答える 2

4

getInput()設定したメソッドを呼び出すたびにi = 0、カウンタをメソッド パラメータとして渡すようにしてください。

public void getInput(int i){
    while(i<=4){
        result[i] = Integer.parseInt(JOptionPane.showInputDialog("Enter Result (1 = pass, 2 = fail)"));
        int res = result[i];
        if(res!=1){
            JOptionPane.showMessageDialog(null,"Wrong input, please try again!");
            System.out.println("Wrong Input:" + res);
            getInput();
        }
        System.out.println("count:"+i);
        i=i+1;
    }
}

この目的で再帰呼び出しを使用することはありません。次のようにしてみませんか。

public void getInput(){      
  while(i<=4) && ((res = Integer.parseInt(JOptionPane.showInputDialog("Enter Result (1 = pass, 2 = fail)"))) != 1){        
      JOptionPane.showMessageDialog(null,"Wrong input, please try again!");
      System.out.println("Wrong Input: " + res);          
      i = i + 1; 
    }
    System.out.println("count:" + i);        
  }
}
于 2013-04-11T10:18:54.713 に答える