Java扫描器比较用户输入字符串返回false?

时间:2014-03-23 17:28:02

标签: java

我现在正在学习Java,而我似乎对我的代码有疑问,我不明白。我已经设置了几个字符串并要求用户输入正确的密码。但即使密码正确,if语句仍会返回false。

import java.util.Scanner;

class apples {
    public static void main(String args[]){
        Scanner icecub = new Scanner(System.in);

        String passln = "Please enter the correct password: ";
        String passwd = "testpass";
        String userpw;

        System.out.print(passln);
        userpw = icecub.next();

        if(userpw == passwd){
            System.out.println("The password is correct!");
        } else {
            System.out.println(userpw);
            System.out.println("Incorrect password!");
        }
    }
}

当用户输入" testpass"它应该返回true。但它打印出来:

testpass 密码不正确!

3 个答案:

答案 0 :(得分:1)

对于使用.equals()

的字符串
if (userpw.equals(passwd))

答案 1 :(得分:1)

比较字符串使用方法等于()而不是 ==

试试这个:

public class Apples {
    public static void main(String args[]){
        Scanner icecub = new Scanner(System.in);

        String passln = "Please enter the correct password: ";
        String passwd = "testpass";
        String userpw;

        System.out.print(passln);
        userpw = icecub.next();

        if(userpw.equals(passwd)){
            System.out.println("The password is correct!");
        } else {
            System.out.println(userpw);
            System.out.println("Incorrect password!");
        }
    }
}

答案 2 :(得分:0)

    if(userpw == passwd)

这应该是

    if(userpw.equals(passwd))

无法将Java字符串与==进行比较。无论如何,看一下String API。