我正在自学Java,我创建了一个模拟掷骰子游戏的程序。我用布尔方法完成整个游戏。一切正常,但我想在每次用户获胜时计算。计算这些胜利的最佳方法是什么,然后打印出来?
这是我的代码:
import java.util.Random;
public class game{
public static void main(String[] args) {
Random rand = new Random();
for(int i = 0; i <= 10; i++){
craps(rand);
}
}
public static boolean craps(Random randomGen){
int roll1 = randomGen.nextInt(6) + 1;
int roll2 = randomGen.nextInt(6) + 1;
int sum = roll1 + roll2;
int sumRepeat = sum;
int count = 0;
String win = "you win";
String lose = "you lose";
String point = "point=";
if(sum == 7 || sum == 11){
System.out.printf("[%d,%d] %d %s\n",roll1,roll2,sum,win);
count++;
return true;
}
else if(sum == 2 || sum == 3 || sum == 12){
System.out.printf("[%d,%d] %d %s\n",roll1,roll2,sum,lose);
return false;
}
else{
System.out.printf("[%d,%d] %s %d",roll1,roll2,point,sum);
int roll3 = randomGen.nextInt(6) + 1;
int roll4 = randomGen.nextInt(6) + 1;
int sum2 = roll3 + roll4;
do{
roll3 = randomGen.nextInt(6) + 1;
roll4 = randomGen.nextInt(6) + 1;
sum2 = roll3 + roll4;
if(sum2 == sumRepeat){
System.out.printf("[%d,%d] %d %s\n",roll3,roll4,sum2,win);
count++;
return true;
}else{
System.out.printf("[%d,%d]",roll3,roll4);
}
}
while(sum2 != 7);{
System.out.printf("[%d,%d] %d %s\n",roll3,roll4,sum2,lose);
return false;
}
}
}
}
我试图返回count变量,但是我得到一个错误,说我不能从我期望的布尔方法返回一个int值。但我也尝试用System.out.println();
打印出计数值但是我在代码中找不到放置它的位置,因为我总是收到一条错误,指出println是无法访问的代码。
任何帮助将不胜感激。谢谢!
以下是该计划的输出
[1,6] 7你赢了
[2,4]积分= 6 [3,6] [3,3] 6你赢了
[3,3] point = 6 [5,1] 6你赢了
[6,1] 7你赢了
[6,3] point = 9 [5,1] [3,5] [2,6] [6,4] [5,6] [1,5] [6,3] 9你赢了< / p>
[3,3]积分= 6 [1,5] 6你赢了
[5,1]积分= 6 [1,5] 6你赢了
[2,2]分= 4 [6,4] [3,3] [3,4] [3,4] 7你输了
[4,5]指数= 9 [6,4] [5,1] [1,2] [6,2] [1,5] [3,5] [6,5] [1,5 ] [5,2] [5,2] 7你输了
[2,2] point = 4 [5,3] [5,6] [6,4] [3,2] [6,5] [3,6] [4,4] [4,2] ] [4,3] [4,3] 7你输了
[6,6] 12你输了
你赢了11次。
答案 0 :(得分:8)
在craps
函数之外计算它们,这是一个简单的方法:
public static void main(String[] args) {
Random rand = new Random();
int counter = 0;
for(int i = 0; i <= 10; i++){
if(craps(rand)) counter++;
}
System.out.println("You won " + counter + " times!");
}
顺便说一句,重要的是要注意它在craps
函数之外的数量远远超过修改它的数量。在学习java时,请记住每个方法只能完成一项工作。您可能希望将craps
函数分解为更小的部分来实践这一理念。 一种方法哲学将使您在稍后回顾时更容易理解和调试更大的项目。
答案 1 :(得分:2)
int wins = 0;
for(int i = 0; i <= 10; i++){
if(craps(rand)) {
wins++;
}
}
// Print a friendly message including `wins`