1

我在 Java 程序中遇到了 while 循环的问题。我想要一个循环,在达到某个输入之前有无限的输入,例如,如果你运行程序,它看起来像这样“输入一个字母”(用户输入 b)“你当前的输入是 B”“输入另一个字母”(用户输入 c)“您当前的输入是 BC”

我的循环:

while (myLock.open() == false) {

    System.out.println("Enter a letter: ");

    String inputString = myScan.nextLine();
    char inputTwo = inputString.charAt(0);
    String inputStringKeeper = inputStringKeeper + inputTwo;

    inputTwo = ' ';
    System.out.println(myLock.setValue(inputStringKeeper) + " your current combo is " + inputStringKeeper);
}

仅供参考,myLock 方法是一种在达到某个输入时解锁“挂锁”的方法,并且会说“解锁”或“仍然锁定”对不起,混乱的帖子,很难用文字解释。谢谢!

4

2 回答 2

3

您需要将声明移到inputStringKeeper循环外。

于 2013-11-05T17:34:20.053 回答
1

跟踪您定义的变量的范围。在这种情况下,inputStringKeeper与当前迭代一样长,这意味着未来的迭代将拥有自己的迭代inputStringKeeper(因为您每次都创建一个新迭代)。

如果您想为while迭代的所有特定步骤使用一个公共变量,请在块外部定义它并在内部使用它。


无关,但我不妨指出一些事情。不要使用myLock.open() == false,而是使用一元(逻辑)运算符not ( !):

while(!myLock.isOpen())

它的作用相同,但更容易阅读。

其次,这是一个很好的场景,可以使用 a来避免每次连接值时在池中StringBuilder创建和存储新值。String

StringBuilder inputStringKeeper = new StringBuilder();

然后,使用该append功能。这将为您处理连接。最后使用good'ol从建造者toString那里得到String


您可能感兴趣的一些概念:

于 2013-11-05T17:55:00.420 回答