我在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);
}
只是FYI myLock方法是一种在达到某个输入时解锁“挂锁”的方法,并且会说“已解锁”或“仍然锁定” 抱歉这个混乱的帖子,很难解释文字。谢谢!
答案 0 :(得分:2)
您需要在循环外移动inputStringKeeper
的声明。
答案 1 :(得分:0)
跟踪您定义的变量的范围。在这种情况下,inputStringKeeper
与当前迭代一样长,这意味着未来的迭代将具有自己的inputStringKeeper
(因为您每次都创建一个新的)。
如果你想为while
迭代的所有特定步骤设置一个公共变量,可以在块之外定义它并在里面使用它。
不相关,但我不妨指出一些事情。而不是使用myLock.open() == false
,而是使用一元(逻辑)运算符而不是(!
):
while(!myLock.isOpen())
它也是如此,但它更容易阅读。
其次,每次连接值时,使用StringBuilder
避免在池中创建和存储新的String
是一个很好的方案。
StringBuilder inputStringKeeper = new StringBuilder();
然后,使用append
功能。这将为您处理串联。最后使用good'ol toString
从构建器中获取String
。
您可能感兴趣的一些观念: