死飞游戏

时间:2016-11-17 22:19:50

标签: java

我正在编写一个程序,它从六面骰子返回一个随机数,并且还接收一个字符串,询问用户第二个骰子的边数。如果用户输入数字2,4,8,10,12,20,100那么骰子角色与那么多方面。如果用户输入的数字不是这个数字,那么第二个骰子应该作为具有六个边的骰子。我们的问题是,如果用户输入的数字不是给定的值,则返回0.我们需要返回1到6之间的随机数,因为它是六面模具。有关如何修复代码的任何建议吗?

//Blueprint
public class Die{
private int numSides;
private int sideFacingUp;
public int die1;
public int die2;
public int num;


public Die()
{
    roll();
}
public Die(int number)
{
num = number;
    if(num==2||num==4||num==8|num==10||num==12||num==20||num==100)
    {
    roll2(num);
    }
    else
    {
        roll();
    }
}
public void roll()
{
    die1= (int)(Math.random()*6)+1;
}
public void roll2(int no)
{
    die2 = (int)(Math.random()*no)+1;

}
public int getDie1()
{
    //System.out.println("I m here");
    return die1;
}
public int getDie2()
{
    return die2;
}

}


//actual program
import java.util.Scanner;
public class DieTester{
public static void main(String[] args){
int num;
Die D1 = new Die();
Scanner s1 = new Scanner(System.in);
System.out.println("The Value of the First Die:"+D1.getDie1());
System.out.println("Enter number of Die you want to create");
num = s1.nextInt();
Die D2 = new Die(num);

System.out.println("The Value of the Second Die:"+D2.getDie2());

}
}

1 个答案:

答案 0 :(得分:2)

问题在于getDie2()

当您致电roll()时,您要将号码指定给die1

因此,如果用户输入了3.它会调用roll()并将随机值分配给die1而不是die2,而int的默认值始终为{{1} }}。这就是你获得0的原因。

更改0以检查getDie2()值。

0

为了摆脱这种不必要的检查,删除public int getDie2() { if(die1 == 0) // die1 will be 0 because roll2() is called. So return die2 { return die2; } else // die2 will be 0 because roll() is called. So return die1 { return die1; } } die1并仅使用一个值作为骰子的面,而不管死亡。

像这样:

die2