2017-05-12 1 views
0

Mein Code:Ich erstelle eine VotingMachine, der gesamte Code scheint in Ordnung, aber wenn ich versuche, es zu laufen, kann ich nicht das Ergebnis bekommen Ich möchte

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; 
     } 

    } 

} 

Mein Code scheint ok, den Compiler didn ‚t gab mir keine Fehlermeldung, aber ich erhalte immer diese:

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! 

ich halte immer die err Nachricht und die Abstimmung nicht anhäufen! Ich konnte wirklich nicht herausfinden, wo ich falsch liege! Bitte helfen Sie mir, danke!

+0

tun Sie das nicht .... name == "HonST" –

Antwort

0

Verwenden Sie name.equals ("Wudi") anstelle von Name == "Wudi".

Wenn Sie == schreiben, verwenden Sie den Standard-Objektkomparator. Dies gibt nur dann true zurück, wenn das Objekt genau dasselbe ist. Also sind Name und "Wudi" nicht gleich, weil sie verschiedene Instanzen sind, obwohl sie dieselben Zeichen enthalten.

Wenn Sie die equals-Methode verwenden, vergleichen Sie die Strings mit dem, was sie darstellen.

+1

Sie möchten eine Erklärung hinzufügen, warum dieser Ansatz besser ist, obwohl es in der Java-Entwicklung allgemein bekannt ist. – K3v1n

+0

Problem gelöst, danke! Ich realisiere nur, dass == in diesem Fall eine so schlechte Übung war. Vielen Dank für Ihre Zeit und Geduld ~ – Alex

Verwandte Themen