2013-10-22 78 views
0
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()方法不起作用。如何比較向用戶輸入要求用戶輸入的變量?

+0

什麼是你想要comapre的人?它看起來像一個類,在這種情況下,你應該首先實例化類,然後你可以達到它的變量/方法。 – Ezzored

+3

'人'是什麼? – Maroun

+0

請發佈一個有效的SSCCE(http://sscce.org/)..人沒有在你的代碼中的任何地方定義,所以它甚至不會編譯.. –

回答

4

問題不在於.equals()不起作用。問題是沒有定義Person

如果您的意思是作爲文字字符串,則需要在其周圍放置雙引號:"Person"

-1

您可以參考以下鏈接他們所提供的樣品例如equals方法

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

我想你忘記了「」在if(name.equals(Person))

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

你可以試試if(name.equalsIgnoreCase("Person"))如果你需要接受任何小寫和大寫。

+0

這也是我的預感 – Cruncher

+0

謝謝我現在就試試這個! –

+0

@JorgeRosas如果你想進入真實的部分給出完全人爲你的輸入。 – Prabhakaran

1

您需要創建一個字符串變量來比較Person。 它應該看起來像: String Person =「Dave」;

如果名稱不匹配,您可能還想要使用else語句來表示其他語句。

0

根據您收到的正確評論,您首先需要確定'人'是什麼。

如果人是輸入你需要以這種方式來編輯你的代碼的字符串表示

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對象來比較你的信息流中,通過你的主要方法輸入的內容。

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! 
0

equals()方法將工作你的情況,如果你有一個字符串進行比較。

使用if(name.equals("Person"))而不是if(name.equals(Person))

PS:我懷疑,如果你使用的第二表達式甚至可以編譯。