返回int值的Boolean方法;

时间:2012-11-15 17:33:56

标签: java boolean return

我正在自学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次。

2 个答案:

答案 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`