一个积极的小组员
这是前几天面试的一个小组员,难得有这么一个积极的小孩,看到消息就立马去看了
存在的问题
可能是他刚学习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开发手册(嵩山版)》,点击下载