Java I';我正在创建一个VotingMachine,整个代码看起来还可以,但当我尝试运行它时,我可以';我没有得到我想要的结果

Java I';我正在创建一个VotingMachine,整个代码看起来还可以,但当我尝试运行它时,我可以';我没有得到我想要的结果,java,voting,Java,Voting,我的代码: 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

我的代码:

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

    }

}
我的代码似乎还可以,编译器没有给我任何错误消息,但我一直收到这样的消息:

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!
我一直收到错误信息,选票不会累积!我真的不知道我哪里做错了! 请帮帮我,谢谢

用name.equals(“无敌”)代替name==“无敌”

当您写入==时,您正在使用标准对象比较器。仅当对象正是samen时,此选项才会返回true。所以名字和“无敌”不一样,因为它们是不同的实例,即使它们包含相同的字符


当您使用equals方法时,您是根据字符串所代表的内容来比较字符串。

不要这样做。。。。name==“HonST”您需要添加一个解释,说明为什么这种方法更好,尽管这是Java开发中的常识。问题已经解决,谢谢!我刚刚意识到在这种情况下使用==是一种非常糟糕的做法。谢谢你的时间和耐心~