2017-05-12 1 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; 
     } 

    } 

} 

내 코드가 좋아 보인다, 컴파일러 didn를을 '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 == "Wudi"대신 name.equals ("Wudi")를 사용하십시오.

==를 쓸 때 표준 개체 비교자를 사용하고 있습니다. 이것은 객체가 정확하게 samen 인 경우에만 true를 반환합니다. 따라서 이름과 "Wudi"는 동일하지 않습니다. 왜냐하면 이름과 "Wudi"는 같은 문자가 포함되어 있더라도 서로 다른 인스턴스이기 때문입니다.

equals 메서드를 사용하면 String이 나타내는 내용과 문자열을 비교할 수 있습니다.

+1

자바 개발에 대한 일반적인 지식 임에도 불구하고 왜 접근법이 더 나은지에 대한 설명을 추가하고자합니다. – K3v1n

+0

문제가 해결되었습니다. 감사합니다. 나는이 경우에 ==를 사용하는 것이 그렇게 나쁜 습관 이었다는 것을 깨닫는다. 시간과 인내심에 감사드립니다 ~ – Alex

관련 문제