While 循环用户输入

Posted

技术标签:

【中文标题】While 循环用户输入【英文标题】:While Loops User Input 【发布时间】: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 链接永久关闭,则没有人可以再看到链接的资源。 【参考方案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


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

StringBuilder class documentation A good answer about the String Pool An intro to the concept of Scope Java Operators Overview

【讨论】:

我玩过 apend,它非常有用,我可以看到自己将来会经常使用它。谢谢! @user2957372 不客气。请记住我们在这里滚动的方式:upvotes 和 accepting answers。

以上是关于While 循环用户输入的主要内容,如果未能解决你的问题,请参考以下文章

用户输入和while 循环

用户输入退出以中断while循环

用户输入和while循环

用户输入与while循环

在使用读取(bash)的while循环中禁用用户输入

用户输入与while循环