为什么我的Strings不会比较?

时间:2015-10-15 15:47:03

标签: java function if-statement

好的,所以我被分配制作一个骰子程序,可以调用它来掷骰子并返回它落在的侧面。我完成了骰子的一部分。但是,当我运行程序时,如果两个语句都等于if,则Counter语句不会执行以递增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.equals(6) && D2.equals(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;
    }
}

4 个答案:

答案 0 :(得分:2)

您似乎错过了.Equals()的含义:

D1.equals(6)

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

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

public int getSide()
{
    return Side;
}

然后在比较中使用

if (D1.getSide() == 6 && D2.getSide() == 6)

答案 1 :(得分:1)

你需要检查骰子的值是否等于值6.现在你正在将骰子对象的值与一个没有意义的数字进行比较。覆盖等于或提供骰子值的吸气剂。

答案 2 :(得分:1)

我认为我所做的就是将if (D1.equals(6) && D2.equals(6))更改为if (D1.equals(6) && D2.equals(6))并删除了else语句中的if部分,并将打印输出到if之前1}}陈述。

这是主要的:

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

答案 3 :(得分:0)

请尝试以下逻辑

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