Boolean method that returns int;

I teach myself Java, and I created a program to simulate a game of dice. I have the whole game in a boolean method. Everything works fine, but I want to count every time the user wins. What is the best way to calculate these winnings and then print them?

Here is my code:

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; } } } } 

I tried to return the count variable, but I get an error: I cannot return the int value from the boolean method that I was expecting. But I also tried to print the count value using System.out.println(); But I can’t find a place in the code to place it, because I always get an error message that println is unreachable code.

Any help would be greatly appreciated. Thanks!

Here is the result of the program

[1,6] 7 you win

[2,4] point = 6 [3,6] [3,3] 6 you won

[3.3] point = 6 [5.1] 6 you win

[6.1] 7 you win

[6.3] point = 9 [5.1] [3.5] [2.6] [6.4] [5.6] [1.5] [6.3] 9 you won

[3,3] point = 6 [1,5] 6 you won

[5.1] point = 6 [1.5] 6 you won

[2.2] point = 4 [6.4] [3.3] [3.4] [3.4] 7 you lose

[4,5] point = 9 [6,4] [5,1] [1,2] [6,2] [1,5] [3,5] [6,5] [1,5] [5 , 2] [5,2] 7 you lose

[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 you lose

[6.6] 12 you lose

You have won 11 times.

+4
source share
2 answers

Count them outside the craps function, here is one easy way:

 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!"); } 

By the way, it is important to note that it is far superior to the counter outside the craps function than to modify it. When you learn Java, remember that each method should only perform one task. You might want to work on breaking the craps function into smaller parts to apply this philosophy. One method for one philosophy of work will make larger projects much easier to understand and debug when you look back.

+8
source
 int wins = 0; for(int i = 0; i <= 10; i++){ if(craps(rand)) { wins++; } } // Print a friendly message including `wins` 
+2
source

Source: https://habr.com/ru/post/1446297/


All Articles