Java:没有退出循环?

时间:2013-06-18 18:35:58

标签: java loops while-loop break

import java.util.Scanner;

public class OrigClass {
public static void main (String[] args){
Scanner ScanObj = new Scanner(System.in);
System.out.println("Set Password: ");
String SetPass = ScanObj.nextLine();
System.out.println("Guess Password: ");
String GuessPass = ScanObj.nextLine();

while (GuessPass != SetPass){
   System.out.println("Incorrect. Try Again: ");
   GuessPass = ScanObj.nextLine();  }}}

因此,您可以看到我正在尝试制作一个非常简单的程序,让用户输入密码然后重新输入密码。我有点困惑为什么这不起作用。我已经尝试了所有我能想到的东西,并在这里阅读了其他类似的问题,但找不到任何东西......

很抱歉,如果这有点基础,但令我烦恼的是,我无法让它工作:(

3 个答案:

答案 0 :(得分:3)

您应该将字符串与String.equals

进行比较

因此您的代码应如下所示:

while (!GuessPass.equals(SetPass)){

并且在评论中提到我会更改变量的名称以匹配Java标准(camelCase用于局部变量和方法),所以总结一下:

while (!guessPass.equals(setPass)){

答案 1 :(得分:2)

比较字符串时,请使用String.equals(“some string”)。

while(!guessPass.equals(setPass)){
//do something
}

我包含了对变量名称的更改。变量标准是第一个单词小写,所有后续单词大写(第一个字母)。这将有助于您和您的同行理解您的代码。希望这会有所帮助。

答案 2 :(得分:0)

以下是您的修复方法。比较字符串时需要使用dot相等。

        public static void main(String[] args) {
            Scanner ScanObj = new Scanner(System.in);
            System.out.println("Set Password: ");
            String SetPass = ScanObj.nextLine();
            System.out.println("Guess Password: ");
            String GuessPass = ScanObj.nextLine();
            // the fix
            while (!GuessPass.equals(SetPass)){
               System.out.println("Incorrect. Try Again: ");
               GuessPass = ScanObj.nextLine();  }}
}