两个玩家之间有一场比赛,第一个获得21分的玩家获胜。 当两个玩家相同的掷骰数达到21时,就会平局。
随着骰子的滚动,这些点相加。
其格式应如下。
*游戏1 *
Roll Player 1 Player 2
1 5 4
2 7 10
3 12 14
4 13 16
5 19 21
player 2 wins!
以下代码是到目前为止我尝试过的代码。
我被困住了,因为我不知道如何创建上面的图表。
如果我尝试在while循环内制作图表,它将反复制作图表。
如果我尝试在while循环之后的while循环之外制作图表,它将
仅当其中一位玩家达到21分时执行。
有人可以帮助我制作此代码吗?
import java.util.*;
public class Dice {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Random rand = new Random();
System.out.println("How many games do you want to play?");
int games= input.nextInt();
System.out.println(" *** Game 1 *** ");
int sum1=0;
int sum2=0;
while (sum1!=21&&sum2!=21){
int roll1 = rand.nextInt(6) + 1;
int roll2 = rand.nextInt(6) + 1;
sum1=+roll1;
sum2=+roll2;
}
if(sum1>sum2){
System.out.println("player 1 wins");
}
else if(sum1<sum2){
System.out.println("player 2 wins");
}
}
}
答案 0 :(得分:0)
如果要每转打印一次,则需要在while循环内打印。这是具有这种功能的示例片段。当然,这不是一个完整的程序,可能会使用一些格式设置。
int sum1 = 0;
int sum2 = 0;
int round = 1;
while(sum1 < 21 && sum2 < 21) { // not sure if you noticed this bug in your code..
sum1 += rand.nextInt(6) + 1;
sum2 += rand.nextInt(6) + 1;
System.out.println("Round " + round + " " + sum1 + " " + sum2);
round++;
}
答案 1 :(得分:0)
一些问题
sum1
和sum2
小于21 不是 !=
+=
而不是=+
注意
我认为您的逻辑是不正确的,但是如果两者都在同一投掷次数上到达21
,该怎么办?
System.out.println(" *** Game 1 *** ");
int sum1=0;
int sum2=0;
int rollNumber = 1;
System.out.println("Roll\tPlayer 1\tPlayer 2");
while (sum1 < 21 && sum2 < 21){
int roll1 = rand.nextInt(6) + 1;
int roll2 = rand.nextInt(6) + 1;
sum1 += roll1;
sum2 += roll2;
if (sum1 > 21) sum1 = 21;
if (sum2 > 21) sum2 = 21;
System.out.format("%d\t%d\t%d%n", rollNumber++, sum1, sum2);
}
if(sum1>sum2){
System.out.println("player 1 wins");
}
else if(sum1<sum2){
System.out.println("player 2 wins");
}
}
输出
*** Game 1 ***
Roll Player 1 Player 2
1 5 4
2 4 5
3 2 3
4 3 1
5 3 3
6 2 3
7 5 6
player 2 wins