在滚动模具后的这个程序中" x"次数(userInput)我想计算每个数字出现的次数。
我尝试制作一个else,如果它会在每个随机数出现时添加一个,但它似乎只能使用最后一个随机数,也许它是因为if不在while循环中?我不确定如何在while循环中添加ifss和ifs ...也许我过度复杂了
System.out.println("Enter the number of times a 6 sided die " +
"should\nbe rolled");
Random r = new Random();
int numberOfRolls = userInput.nextInt();
int randomRoll;
int timesRolled = 0;
if (numberOfRolls <= 0) {
System.out.println("Nope, that's below zero");
System.exit(0);
}
do {
timesRolled++;
randomRoll = r.nextInt(6) + 1;
System.out.println(randomRoll + " was rolled");
}
while (numberOfRolls > timesRolled);
int numberOne = 0;
int numberTwo = 0;
int numberThree = 0;
int numberFour = 0;
int numberFive = 0;
int numberSix = 0;
if (randomRoll == 1)
{
numberOne ++;
}
else if (randomRoll == 2)
{
numberTwo ++;
}
else if (randomRoll == 3)
{
numberThree ++;
}
else if (randomRoll == 4)
{
numberFour ++;
}
else if (randomRoll == 5)
{
numberFive ++;
}
else if (randomRoll == 6)
{
numberSix ++;
}
System.out.println(" One: " +numberOne+ "\n Two: " +numberTwo+ "\n Three: " +numberThree+
"\n Four: " +numberFour+ "\n Five: " +numberFive+ "\n Six: " +numberSix);
}
输出为:
> Enter the number of times a 6 sided die should
be rolled
3
2 was rolled
5 was rolled
1 was rolled
One: 1
Two: 0
Three: 0
Four: 0
Five: 0
Six: 0
答案 0 :(得分:1)
你需要在你的do / while循环中实现滚动的大块if / else块。你只获得1分的原因是当do / while退出时,它只能检查 MaterialDialog dialog = new MaterialDialog.Builder(this)
.title(R.string.googleWifi)
.customView(R.layout.dialog_customview, true)
.positiveText(R.string.connect)
.negativeText(android.R.string.cancel)
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
showToast("Password: " + passwordInput.getText().toString());
}
}).build();
的最新值。所有其他值都被最后一个值覆盖,数据丢失。
将其重新排序为:
randomRoll
编辑:我非常喜欢Aelexe建议将其用作开关,所以这就是看起来像:
int numberOne = 0;
int numberTwo = 0;
int numberThree = 0;
int numberFour = 0;
int numberFive = 0;
int numberSix = 0;
do {
timesRolled++;
randomRoll = r.nextInt(6) + 1;
System.out.println(randomRoll + " was rolled");
if (randomRoll == 1)
{
numberOne ++;
}
else if (randomRoll == 2)
{
numberTwo ++;
}
else if (randomRoll == 3)
{
numberThree ++;
}
else if (randomRoll == 4)
{
numberFour ++;
}
else if (randomRoll == 5)
{
numberFive ++;
}
else if (randomRoll == 6)
{
numberSix ++;
}
}
while (numberOfRolls > timesRolled);
编辑2:因为我也喜欢cricket_007的建议,这就是看起来的样子:
//note that I'm shortening things a bit to save a little typing.
//I don't have a Java compiler on the computer I'm at but I think I can get this right from memory.
int one, two, three, four, five, six;
one = two = three = four = five = six = 0;
do
{
timesRolled++;
randomRoll = r.nextInt(6) + 1;
switch(randomRoll)
{
case 1:
++one; break;
case 2:
++two; break;
case 3:
++three; break;
case 4:
++four; break;
case 5:
++five; break;
case 6:
++six;
}
} while(numberOfRolls > timesRolled);
答案 1 :(得分:1)
这就是你的代码应该是这样的:
int randomRoll = 6;
int timesRolled = 0;
int numberOfRolls = 8;
int numberOne = 0;
int numberTwo = 0;
int numberThree = 0;
int numberFour = 0;
int numberFive = 0;
int numberSix = 0;
Random r = new Random();
while (numberOfRolls > timesRolled ){
timesRolled++;
randomRoll = r.nextInt(6) + 1;
System.out.println(randomRoll + " was rolled");
if (randomRoll == 1)
{
numberOne ++;
}
else if (randomRoll == 2)
{
numberTwo ++;
}
else if (randomRoll == 3)
{
numberThree ++;
}
else if (randomRoll == 4)
{
numberFour ++;
}
else if (randomRoll == 5)
{
numberFive ++;
}
else if (randomRoll == 6)
{
numberSix ++;
}
System.out.println(" One: " +numberOne+ "\n Two: " +numberTwo+ "\n Three: " +numberThree+
"\n Four: " +numberFour+ "\n Five: " +numberFive+ "\n Six: " +numberSix);
}