0

コードのこのセクションにパスワードを設定しようとしています。do while ループを使用しようとしていますが、ループを続けています。

私のエラーがどこにあるか教えてください。私が使用しているパスワードは です1234

import javax.swing.*;

public class cipherprac
{                    
  static int choice = 0;
  public static String msg;
  public static int password = 1234;
  public static int response = 0;

  public static void main (String[] args)
  {
    msg = JOptionPane.showInputDialog("Enter the message");
    response = Integer.parseInt(JOptionPane.showInputDialog("Enter the password"));
    do
    {
      char enc;
      String encmsg = "";
      int len = msg.length();
      for (int i = 0; i < len; i++) 
      {
        char cur = msg.charAt(i);
        int val = (int) cur;
        val = val - 30;
        enc = (char) val;
        encmsg = encmsg + enc;  
        msg = encmsg;    
      }
    }
    while(response == password) ;      

    JOptionPane.showMessageDialog(null, " " + msg);
  }
}
4

4 に答える 4

2

コード内のresponse(nor ) を変更しないため、これを設定すると永久にループします。password1234

于 2013-10-30T11:34:00.550 に答える
1

response = Integer.parseInt(JOptionPane.showInputDialog("Enter the password"));最後に「応答」を設定したときなので、それは永遠に続くため、無限ループになります。

これはある種のカスタム暗号化のようですか? とにかく、あなたは次のようなことをしたいでしょう:

do
{
    ...
} 
while(response == password && "Certain condition isn't met");

このようにして、何らかの理由でユーザー入力が変更された場合、またはプロセスで完了した場合にループが終了します。

于 2013-10-30T11:42:59.460 に答える
0

複数の問題があります。

  • ループ内で応答を更新しない
  • 成功すると条件が再びループしますが、正しく理解できれば、失敗したパスワードで再試行する必要があると思います。

パスワードが正しくなるまで試行を続けますか?

この場合、while 条件は等しくないときに true になる必要があるため、成功しない場合は試行を続けます。

あなたの場合、応答が 1234 でない場合は試行されず、そうである場合は永遠にループします。

do while ループに理想的です。

set condition value before loop
do{
    // do some work
    // update condition value
}while(condition);
于 2013-10-30T11:46:07.290 に答える
0

ループ内で変数passwordまたは変数の値を変更しないでください。responseでは、ループはどのように停止するのでしょうか?

ループは 1 回実行され、最後に続行の条件が満たされているかどうかを確認します。はいの場合、ループ コード ブロックの次の繰り返しが開始されます。ループの条件に影響を与えるループ内で何も変更しない場合、ループは 1 回 (条件が false と評価された場合)、またはプログラムを強制終了するまで (条件が true と評価された場合) 実行されます。

ループの通常の作業については、多くの言語 (Java を含む) の例を使用して適切な説明を見つけることができます:ウィキペディアのリンク

于 2013-10-30T11:34:26.113 に答える