A team member sent me a Java program and asked me to streamline it for him. After the modification, I doubled the size of his code...

a positive group member

This is a team member who was interviewed a few days ago. It is rare to have such a positive child. He immediately went to see the news after seeing the news.
Insert image description here

Problems

Maybe it's because he just learned Java. When I saw his code, I...

Alas, even the team members I recruited had to change with tears in my eyes.

Insert image description here

Original code

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

Modified code

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

Study suggestions

The team member's intention may be to let me simplify his logic. This is a development detail. I don't care. Development specifications are the most important. Java is not Python. You must ensure that the program you write is reusable and easy to expand. clear reference etc.

So how to write high-quality code? This requires complying with Java development specifications. I recommend everyone to read the "Alibaba Java Development Manual (Songshan Edition)", click to download

Guess you like

Origin blog.csdn.net/m0_46521785/article/details/120391616
Recommended