0

帮助。我是 Java 编程的新手,所以我会尽量利用你的术语。我想知道如何让这个程序注册为真的。当我输入“密码”作为输入时,它不会执行“if”正文中的任何代码。我还将这段代码粘贴到另一个类中,无论如何它仍然不起作用。

我在这个程序上工作了大约半个小时,调试它的时间是原来的两倍。请仔细阅读编码。

import java.util.Scanner;

public class whileloop {

    public void whileloop1() {

        //DEBUG THIS PROGRAM! "password" does not work for input

        System.out.println("Please enter the password to continue: ");
        Scanner password = new Scanner(System.in);
        String passwordinput = password.nextLine();

        System.out.println("This is your entered password: " + passwordinput);

        if (passwordinput == "password") {

            System.out.println("Startup sequence has been iniciated.");
            System.out.println("System is working correctly.");

            //Terminate all here ---

         } else {

             System.out.println("Wrong password! Terminating program. /END");

        }

        System.out.println("Supressing the program's scanner!");
        password.close();

    }

}   
4

3 回答 3

1

在 Java 中比较字符串内容时,您使用.equals()方法。== 运算符检查引用相等性,含义,测试它们是否都是同一对象的引用。

所以,在你的情况下:

if(passwordinput.equals("password"))
于 2013-02-24T03:55:55.617 回答
1

这已经说过很多次了,但是我再说一遍,在java中比较字符串时,如果您想知道它们是否指向相同的引用,请使用==运算符。如果您想检查它们的价值是否相等,请.equals("somestringhere") 在您的情况下使用passwordinput.equals("password")

于 2013-02-24T03:56:43.417 回答
0

因为,Java在行中:

String s;声明对String对象的引用,不像C++,它可以声明 的对象String
因此,如果(passwordinput == "password")将 的引用"password"和 的引用进行比较passwordinput,结果将是错误的。
所以,使用,它通过与if(passwordinput.equals("password")来比较对象referencedpasswordinput"password"

于 2013-02-24T04:13:15.060 回答