2017-05-12 20 views
0

我的代碼:我創建一個VotingMachine,整個代碼似乎確定,但是當我嘗試運行它,我不能得到的結果,我想

import java.util.*; 

public class VotingMachine { 
    private int WuDI; 
    private int HonST; 
    private int HawLB; 
    private int JanCS; 
    private int HanGU; 
    private int PanWG; 

    public VotingMachine() { WuDI = 0; HonST = 0; HawLB = 0; JanCS = 0;   HanGU = 0; PanWG = 0; } 
    public VotingMachine(int WuDI, int HonST, int HawLB, int JanCS, int HanGU, int PanWG) { 
     this.WuDI = WuDI; 
     this.HonST = HonST; 
     this.HawLB = HawLB; 
     this.JanCS = JanCS; 
     this.HanGU = HanGU; 
     this.PanWG = PanWG; 
    } 
    public void showVote(){ 
     System.out.println("WuDI = " + WuDI + "vote(s)"); 
     System.out.println("HonST = " + HonST + "vote(s)"); 
     System.out.println("HawLB = " + HawLB + "vote(s)"); 
     System.out.println("JanCS = " + JanCS + "vote(s)"); 
     System.out.println("HanGU = " + HanGU + "vote(s)"); 
     System.out.println("PanWG = " + PanWG + "vote(s)"); 
    } 
    public void clear() { WuDI = 0; HonST = 0; HawLB = 0; JanCS = 0; HanGU = 0; PanWG = 0; } 
    public void voteWuDI() { WuDI+=1; } 
    public void voteHonST() { HonST+=1; } 
    public void voteHawLB() { HawLB+=1; } 
    public void voteJanCS() { JanCS+=1; } 
    public void voteHanGU() { HanGU+=1; } 
    public void votePanWG() { PanWG+=1; } 

    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     VotingMachine v1 = new VotingMachine(); 
     v1.clear(); 

     for(;;){ 
      System.out.print("Cast your vote by entering the candidate's name: "); 
      String name = in.next(); 
      if(name == "WuDI") 
       v1.voteWuDI(); 
      else if(name == "HonST") 
       v1.voteHonST(); 
      else if(name == "HawLB") 
       v1.voteHawLB(); 
      else if(name == "JanCS") 
       v1.voteJanCS(); 
      else if(name == "HanGU") 
       v1.voteHanGU(); 
      else if(name == "PanWG") 
       v1.votePanWG(); 
      else System.err.println("The name your entered is not exist."); 

      System.out.print("Do you want to continue to vote? (Y/N): "); 
      char ans = in.next().charAt(0); 
      if(ans == 'N' || ans == 'n'){ 
       System.out.println("The result of the election is: "); 
       v1.showVote(); 
       System.out.println("Thank you for your vote!"); 
       System.exit(0);} 
      else continue; 
     } 

    } 

} 

我的代碼似乎確定,編譯器沒't給我任何錯誤消息,但我一直得到這個:

Cast your vote by entering the candidate's name: WuDI 
Do you want to continue to vote? (Y/N): The name your entered is not exist. 
N 
The result of the election is: 
WuDI = 0vote(s) 
HonST = 0vote(s) 
HawLB = 0vote(s) 
JanCS = 0vote(s) 
HanGU = 0vote(s) 
PanWG = 0vote(s) 
Thank you for your vote! 

我不斷收到err消息和投票不會積累!我真的無法弄清楚我做錯了什麼! 請幫助我,謝謝!

+0

不要做這個.... name ==「HonST」 –

回答

0

使用name.equals(「Wudi」)而不是名字==「無棣」。

當您編寫==時,您正在使用標準對象比較器。這隻有在對象完全相同時才返回true。所以名字和「無敵」是不一樣的,因爲它們是不同的實例,即使它們包含相同的字符。

當您使用equals方法時,您將通過它們所代表的字符串進行比較。

+1

你會想要添加一個解釋,爲什麼這種方法更好,即使它是Java開發中的常識。 – K3v1n

+0

問題解決了,謝謝!我只是意識到在這種情況下使用==是非常糟糕的做法。感謝您的時間和耐心〜 – Alex

相關問題