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