java中while的条件判断

问题描述

有9个人玩抛骰子游戏,每人有十次机会,每一次抛两个骰子(骰子的点数1-6 也就是两次1-6的随机数)
如果骰子1和骰子2的点数均位1那么打印single并返回1 详细如图所示

让我们回到前面的条件9个人玩游戏,每个人有十次机会玩骰子,每次机会抛两个骰子,如果一个人在他的十次机会中有三个strike返回值(到三为止多了不要)那么给这个人一朵小红花

如果这9个人分别用掉他们的10次机会后,有3朵小红花则游戏结束,如果不足3朵重新开始游戏
这个游戏不会写了,不知道重新开始游戏的代码如何写
注意几个函数的用途是固定的
bat:抛骰子1 骰子2 根据图中的条件打印提示和返回对应的值
BatterTakeTurn: 每个玩家是否获得小红花,如果符合获得小红花的条件返回true否则返回false

clipboard.png

问题出现的环境背景及自己尝试过哪些方法

相关代码

目前完成的代码

import java.lang.String;
import java.util.Random;
public class Butterup3 {
    public static void  main(String[] args) {
//        定义一个array包含9个人名
        String[] names = {"Amy", "Bob", "Carl", "Diana", "Ed", "Francis", "Gerogia", "Hank", "lzzy"};
        int tune = 0;
        for(int i = 0;i<names.length; i++) {
            Boolean r =  BatterTakeTurn(names[i]);
            if(r == true) {
                tune = tune+1;
                if(tune ==3) {
                    break;
                }
            }
        }
    }
    public static boolean  BatterTakeTurn(String args) {
        System.out.println(args);
        int StrikeTotal = 0;
        for(int i=0;i<10;i++){
            int result = bat();
            if(result == -1) {
                StrikeTotal = StrikeTotal+1;
                if(StrikeTotal==3) {
                    System.out.println("Strike out");
                    break;
                }
            }
        }
        return StrikeTotal==3?true:false;

    }
    public static int bat() {
//        java语言本身提供的获取随机数方法
        Random rand = new Random();
//        骰子1 生成1-6之间的随机数
        int x = rand.nextInt(6) + 1;
//        骰子2 生成1-6之间的随机数
        int y = rand.nextInt(6) + 1;
        if(x == 1 && y == 1) {  //骰子1与骰子2均为1  &&表示并且
            System.out.println("Rolled " + x + " " + y + " " + "single");
            return 1;
        }else if (x==2 && y == 2){  //骰子1与骰子2均为2  &&表示并且
            System.out.println("Rolled " + x + " " + y + " " + "double");
            return 2;
        }else if(x == 3 && y == 3) { //骰子1与骰子2均为3  &&表示并且
            System.out.println("Rolled " + x + " " + y + " " + "triple");
            return 3;
        }else if(x==4 && y== 4) {   //骰子1与骰子2均为4  &&表示并且
            System.out.println("Rolled " + x + " " + y + " " + "Home run");
            return 4;
        }else { //以上几种情况都不属于 则判断骰子1加骰子2的和是否是奇偶数
            int sum = x + y;//骰子1 和 骰子2 相加的和
            if(sum%2 != 0) { //如果和为奇数的情况
                System.out.println("Rolled " + x + " " + y + " " + "Ball");
                return -2;
            }else {//既然不是奇数那么为偶数 这里是偶数的情况
                System.out.println("Rolled " + x + " " + y + " " + "Strike");
                return -1;
            }
        }
    }
}

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 3.6k
1 个回答

主要添加了playARound方法,表示一轮游戏。

import java.lang.String;
import java.util.Random;
public class Butterup3 {
    public static void  main(String[] args) {
//        定义一个array包含9个人名
        String[] players = {"Amy", "Bob", "Carl", "Diana", "Ed", "Francis", "Gerogia", "Hank", "lzzy"};
        int tune;
        while(true) {
            System.out.println("新一轮游戏开始。");
            tune = playARound(players);
            System.out.println("本轮游戏结束");
            if(tune < 3) {
                System.out.println("本轮没有出现三朵以上红花,游戏继续");
            }else {
                System.out.println("本轮出现了"+tune+"朵红花,整个游戏结束");
                break;
            }
        }
    }
    public static int playARound(String[] players) {
        int tune = 0;
        for(int i = 0;i< players.length; i++) {
            if(BatterTakeTurn(players[i])) {
                tune++;
            }
        }
        return tune;
    }
    
    public static boolean  BatterTakeTurn(String args) {
        System.out.println(args);
        int StrikeTotal = 0;
        for(int i=0;i<10;i++){
            int result = bat();
            if(result == -1) {
                StrikeTotal = StrikeTotal+1;
                if(StrikeTotal==3) {
                    System.out.println("Strike out");
                    break;
                }
            }
        }
        return StrikeTotal==3?true:false;

    }
    public static int bat() {
//        java语言本身提供的获取随机数方法
        Random rand = new Random();
//        骰子1 生成1-6之间的随机数
        int x = rand.nextInt(6) + 1;
//        骰子2 生成1-6之间的随机数
        int y = rand.nextInt(6) + 1;
        if(x == 1 && y == 1) {  //骰子1与骰子2均为1  &&表示并且
            System.out.println("Rolled " + x + " " + y + " " + "single");
            return 1;
        }else if (x==2 && y == 2){  //骰子1与骰子2均为2  &&表示并且
            System.out.println("Rolled " + x + " " + y + " " + "double");
            return 2;
        }else if(x == 3 && y == 3) { //骰子1与骰子2均为3  &&表示并且
            System.out.println("Rolled " + x + " " + y + " " + "triple");
            return 3;
        }else if(x==4 && y== 4) {   //骰子1与骰子2均为4  &&表示并且
            System.out.println("Rolled " + x + " " + y + " " + "Home run");
            return 4;
        }else { //以上几种情况都不属于 则判断骰子1加骰子2的和是否是奇偶数
            int sum = x + y;//骰子1 和 骰子2 相加的和
            if(sum%2 != 0) { //如果和为奇数的情况
                System.out.println("Rolled " + x + " " + y + " " + "Ball");
                return -2;
            }else {//既然不是奇数那么为偶数 这里是偶数的情况
                System.out.println("Rolled " + x + " " + y + " " + "Strike");
                return -1;
            }
        }
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题