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 循环用户输入的主要内容,如果未能解决你的问题,请参考以下文章