Java 为什么我的弦不能比较?

Java 为什么我的弦不能比较?,java,function,if-statement,Java,Function,If Statement,好的,所以我被指派制作一个骰子程序,可以调用它来掷骰子并返回它落在的那一边。我完成了掷骰子的部分。然而,当我运行我的程序时,如果两者都等于6,我的if语句就不会执行递增计数器。我的程序有什么问题 这是主要问题: 您需要检查模具的值是否等于值6。现在,您正在将骰子对象的值与一个没有意义的数字进行比较。重写equals或为骰子的值提供一个getter。您似乎错过了什么。equals的意思是: D1不等于6。D1是骰子对象的实例,6是整数。您需要确定D1内的整数值是否等于6 首先,在Dice类上为该值

好的,所以我被指派制作一个骰子程序,可以调用它来掷骰子并返回它落在的那一边。我完成了掷骰子的部分。然而,当我运行我的程序时,如果两者都等于6,我的if语句就不会执行递增计数器。我的程序有什么问题

这是主要问题:


您需要检查模具的值是否等于值6。现在,您正在将骰子对象的值与一个没有意义的数字进行比较。重写equals或为骰子的值提供一个getter。

您似乎错过了什么。equals的意思是:

D1不等于6。D1是骰子对象的实例,6是整数。您需要确定D1内的整数值是否等于6

首先,在Dice类上为该值创建一个getter:

然后将其用于比较:

if (D1.getSide() == 6 && D2.getSide() == 6)
请尝试下面的逻辑

public class PairOfDice {

    public static void main(String[] args) {
        int counter = 0;
        Dice d1 = new Dice();
        Dice d2 = new Dice();

        for (int X = 0; X <= 1000; X++)
        {
            d1.roll();
            d2.roll();

            if (d1.getSide()==6 && d2.getSide()==6)
            {
                counter++;
            }
            else
            {
                System.out.print ("Dice 1 = " + d1 + " | ");
                System.out.println ("Dice 2 = " + d2);
            }
        }
        System.out.print ("There were " + counter + " Box Cars");
    }
}




public class Dice {

    private int side;

    public Dice()
    {
        roll();
    }

    public void roll()
    {
        side = (int)(Math.random() * 6 + 1);
    }

    public String toString()
    {
        String A;
        A = Integer.toString(side);
        return A;
    }

    public int getSide() {
        return side;
    }
}

我发现我所做的只是将if D1.equals6&&D2.equals6更改为if D1.equals6&&D2.equals6,删除if语句的else部分,并将打印输出放在if语句之前

这是主要问题:


为什么会这样?你认为D1.equals6做什么?你为什么这么认为?变量名不应该以大写字符开头。而且你的骰子是一个类而不是一个函数。最好做a面并使用你创建的getter方法。更好的是,您可以创建一个新的getter方法,将其作为整数返回。无论哪种方法,都要确保隐藏类的内部实现,这样在重构代码内部时,另一个程序员的代码就不会中断。
D1.equals(6)
public int getSide()
{
    return Side;
}
if (D1.getSide() == 6 && D2.getSide() == 6)
public class PairOfDice {

    public static void main(String[] args) {
        int counter = 0;
        Dice d1 = new Dice();
        Dice d2 = new Dice();

        for (int X = 0; X <= 1000; X++)
        {
            d1.roll();
            d2.roll();

            if (d1.getSide()==6 && d2.getSide()==6)
            {
                counter++;
            }
            else
            {
                System.out.print ("Dice 1 = " + d1 + " | ");
                System.out.println ("Dice 2 = " + d2);
            }
        }
        System.out.print ("There were " + counter + " Box Cars");
    }
}




public class Dice {

    private int side;

    public Dice()
    {
        roll();
    }

    public void roll()
    {
        side = (int)(Math.random() * 6 + 1);
    }

    public String toString()
    {
        String A;
        A = Integer.toString(side);
        return A;
    }

    public int getSide() {
        return side;
    }
}
public class PairOfDice {

    public static void main(String[] args) {
        int Counter = 0;
        Dice D1 = new Dice();
        Dice D2 = new Dice();

        for (int X = 0; X <= 1000; X++)
        {
            D1.Roll();
            D2.Roll();

            System.out.print ("Dice 1 = " + D1 + " | ");
            System.out.println ("Dice 2 = " + D2);

            if (D1.Side == 6 && D2.Side == 6)
            {
                Counter++;
            }
        }
        System.out.print ("There were " + Counter + " Box Cars");
    }
}
public class Dice {

    int Side;

    public Dice()
    {
        Roll();
    }

    public void Roll()
    {
        Side = (int)(Math.random() * 6 + 1);
    }

    public String toString()
    {
        String A;
        A = Integer.toString(Side);
        return A;
    }
}