0

I am trying to put a password onto this section of code, I am trying to use a do while loop but it carries on looping.

Can you please show me where my errors are? The password I am using is 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

You don't change the response (nor password) in your code, so if you set it to 1234 then it will be looping for ever.

于 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

好吧,您不会在循环内更改passwordor变量的值。response那么循环应该如何停止呢?

您的循环将运行一次,最后检查是否满足继续条件。如果是,它将开始循环代码块的下一次迭代。如果您不更改循环内对循环条件有影响的任何内容,它将运行一次(如果条件评估为假)或直到您终止程序(如果条件评估为真)。

至于循环的正常工作,您可以在这里找到一个很好的解释,其中包含多种语言(包括 Java)的示例:Wikipedia link

于 2013-10-30T11:34:26.113 回答
0

有多个问题:

  • 不更新循环内的响应
  • 如果成功,条件会再次循环,但如果我理解正确,我认为它应该在密码不成功时再次尝试。

你想继续尝试直到你的密码正确吗?

在这种情况下,当它们不相等时,您的 while 条件应该为真,这样如果不成功,您就继续尝试。

在您的情况下,如果您的响应不是 1234,它将不会尝试,如果是,它将永远循环。

理想情况下用于 do while 循环:

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