组员给我发了个Java程序让我帮他精简一下,改完我把他的代码量增加了1倍...

一个积极的小组员

这是前几天面试的一个小组员,难得有这么一个积极的小孩,看到消息就立马去看了
在这里插入图片描述

存在的问题

可能是他刚学习Java的原因,看到他的代码,我…

唉,自己收的组员,含着泪也要改

在这里插入图片描述

原代码

public class demo {
    
    
    public static void main(String[] args) {
    
    
        int money = 1000;  /*初始资金*/
        boolean go_on=false;
        while (money>0){
    
    
            Scanner input=new Scanner(System.in);
            System.out.println("请下注");
            int xiazhu= input.nextInt();
            if (xiazhu>0&&xiazhu<=money){
    
         /*判断下注正确*/
                int number1 = random();
                System.out.println(number1);
                if(number1==7||number1==11){
    
        /*玩家赢*/
                    money+=xiazhu;
                    System.out.println("玩家赢");
                    System.out.println("当前资产"+money);
                }else {
    
    
                    if(number1==2||number1==3||number1==12){
    
        /*庄家赢*/
                        money-=xiazhu;
                        System.out.println("庄家赢");
                        System.out.println("当前资产"+money);
                    }else{
    
    go_on=true;}
                }
                while (go_on){
    
              /*继续扔*/
                    int number=random();
                    System.out.println(number);
                    if(number==7){
    
            /*庄家赢*/
                        money-=xiazhu;
                        System.out.println("庄家赢");
                        System.out.println("当前资产"+money);
                        go_on=false;
                    }else {
    
    if(number==number1){
    
         /*玩家赢*/
                        money+=xiazhu;
                        System.out.println("玩家赢");
                        System.out.println("当前资产"+money);
                        go_on=false;
                    }else {
    
    }
                    }
                }
            }else{
    
    
                System.out.println("输入有误,重新输入");
            }
        }
        if (money<=0){
    
    
            System.out.println("破产了");
        }
    }
    public static int random() {
    
    /*生成一个随机双骰子*/
        Random r = new Random();
        int r1 = r.nextInt(6) + 1;  /*第一个骰子*/
        int r2 = r.nextInt(6) + 1;  /*第二个骰子*/
        int r3 = r1 + r2;
        return r3;
    }
}

修改后的代码

public class Game {
    
    
    /**
     * 随机数生成器和输入流
     */
    private Random random;
    private Scanner input;
    /**
     * 初始资金
     */
    private int money = 1000;
    /**
     * 游戏是否继续
     */
    private boolean goOn=false;

    /**
     * 用户资金默认为1000元,用户资金可以通过构造函数传入
     */
    public Game(int money) {
    
    
        this.random = new Random();
        this.input = new Scanner(System.in);
        this.money = money;
    }
    /**
     * 生成一个随机双骰子
     */
    public int getPonit() {
    
    
        //第一个骰子
        int r1 = random.nextInt(6) + 1;
        //第二个骰子
        int r2 = random.nextInt(6) + 1;
        return r1 + r2;
    }
    /**
     * 获取下注情况,如果下注错误就返回-1
     */
    private int getBet() {
    
    
        System.out.print("请下注:");
        int bet = input.nextInt();
        if (bet <= 0){
    
    
            // 输入错误
            return -1;
        } else if (bet>0 && bet<=money){
    
    
            // 余额不足
            return -2;
        }
        return bet;
    }
    /**
     * 进行一局对局
     */
    private void once(int bet) {
    
    
        int number = getPonit();
        System.out.println(number);
        if(number==7 || number==11){
    
    
            money += bet;
            System.out.println("玩家赢,当前资产:"+money);
        }else {
    
    
            if(number==2||number==3||number==12){
    
    
                money -= bet;
                System.out.println("庄家赢,当前资产"+money);
            }else{
    
    
                goOn=true;
            }
        }
    }
    /**
     * 看是否继续下一局
     */
    private void checkGoOn() {
    
    
        String ans;
        while (true) {
    
    
            System.out.print("是否继续游戏,输入Y表示继续,N为退出:");
            ans = input.next();
            if (!ans.equals("Y") && !ans.equals("N")) {
    
    
                System.out.println("大无语,这都能输错?再来一遍....");
            }
            goOn = ans.equals("Y")?true:false;
        }
    }
    /**
     * 游戏开始
     */
    public void start() {
    
    
        while (money>0 && goOn){
    
    
            // 用户下注
            int bet = getBet();
            // 判断下注是否正确,正确则开始
            if (bet==-1) {
    
    
                System.out.println("输入错误...");
            } else if (bet==-2) {
    
    
                System.out.println("余额不足...");
            } else {
    
    
                once(bet);
                checkGoOn();
            }
        }
        if (money<=0) {
    
    
            System.out.println("游戏结束:玩家破产");
        } else {
    
    
            System.out.println("游戏结束:玩家退出");
        }
    }
}

class GameTest {
    
    
    public static void main(String[] args) {
    
    
        Game game = new Game(1000);
        game.start();
    }
}

学习建议

组员的意图可能是让我简化一下他的逻辑,这是开发细节,我并不关心,开发规范才是最关键的,Java不是Python,你要保证你写的程序可复用、易拓展、指代明确等等

那如何写出高质量代码呢?这就要遵守Java开发规范,我推荐大家阅读《阿里巴巴Java开发手册(嵩山版)》,点击下载

猜你喜欢

转载自blog.csdn.net/m0_46521785/article/details/120391616