如何将要求用户输入的变量与用户输入进行比较?

时间:2013-10-22 15:37:52

标签: java

import java.util.*;
public class Name2
{
    public static void main (String[] args)
    {
        String name;
        Scanner scan = new Scanner(System.in);
        System.out.println("Please enter your name: ");
        name = scan.nextLine();
        // asks for user input

        if(name.equals(Person)) 
        // this is my problem. The .equals() method doesn't work

        System.out.println("Hey buddy!");
        else
        System.out.println("This is just an example");
    }
} 

这是我没有运气的尝试。 .equals()方法不起作用。

6 个答案:

答案 0 :(得分:4)

问题不在于.equals()不起作用。问题是Person未定义。

如果您将其视为文字字符串,则需要在其周围加上双引号:"Person"

答案 1 :(得分:2)

我想你忘记了if(name.equals(Person))

上的“”

可能是if(name.equals("Person"))

如果您需要接受小写和大写,请尝试if( name.equalsIgnoreCase("Person"))

答案 2 :(得分:1)

你需要创建一个String变量来比较Person。 它应该看起来像: String Person =“Dave”;

如果名称不匹配,您可能还想要使用else语句来说出其他内容。

答案 3 :(得分:0)

根据您收到的正确评论,您首先需要定义'人'的真实含义。

如果Person是输入的字符串表示,您需要以这种方式编辑代码:

    String name;
    Scanner scan = new Scanner(System.in);
    System.out.println("Please enter your name: ");
    name = scan.nextLine();
    // asks for user input

    // Wrap Person in double quotes
    if (name.equals("Person"))
        System.out.println("Hey buddy!");
    else
        System.out.println("This is just an example");

输出将是:

Please enter your name: 
Person
Hey buddy!

如果Person是用户定义的对象,那么首先需要定义一个覆盖equals方法的Person对象。

人物对象

public class Person
{
    private String name;

    public Person(String name)
    {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Person other = (Person) obj;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        return true;
}

然后使用Person对象通过main方法比较您在流中输入的内容。

public static void main(String[] args) {

    // Construct and initialise Person
    Person person = new Person("Person");

    Scanner scan = new Scanner(System.in);
    System.out.println("Please enter your name: ");
    Person name = new Person(scan.nextLine());
    // asks for user input

    // Use the person object for name instead of String
    if (name.equals(person))
        System.out.println("Hey buddy!");
    else
        System.out.println("This is just an example");

}

你应该得到你想要的输出,即

Please enter your name: 
Person
Hey buddy!

答案 4 :(得分:0)

如果您将其与String进行比较,

equals()将适用于您的情况。

使用if(name.equals("Person"))代替if(name.equals(Person))

PS:我怀疑你使用的第二个表达式是否会被编译。

答案 5 :(得分:-1)

您可以参考此链接,他们提供有关equals方法的示例示例

http://geeklabs.co.in/corejava/EqualsOprtr.html