【问题标题】:While Loops User InputWhile 循环用户输入
【发布时间】:2013-11-16 16:37:26
【问题描述】:

我在 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 方法是一种在达到某个输入时解锁“挂锁”并会显示“解锁”或“仍然锁定”的方法 对不起,混乱的帖子,很难用文字解释。谢谢!

【问题讨论】:

  • 请不要链接到pastebin,把代码粘贴到这里。如果 pastebin 链接永久关闭,则没有人可以再看到链接的资源。

标签: java loops while-loop


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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


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

    while(!myLock.isOpen())
    

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

    其次,这是一个使用StringBuilder 的好方案,以避免每次连接值时在池中创建和存储新的String

    StringBuilder inputStringKeeper = new StringBuilder();
    

    然后,使用append 函数。这将为您处理连接。最后使用good'ol toString从builder那里得到String


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

    【讨论】:

    • 我玩过 apend,它非常有用,我可以看到自己将来会经常使用它。谢谢!
    • @user2957372 不客气。请记住我们在这里滚动的方式:upvotesaccepting answers
    猜你喜欢
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多