用java中的递归实现苹果机

林初茵 2010-04-09 12:13:24
用java 编程
用java 中的递归实现苹果机~ 苹果机: 共有八种图案,分别为 苹果(2倍) 桔子(4倍)铃铛(6倍) 木瓜(6倍)西瓜(8倍) 双星(10倍)双七(12倍) 大王(14倍) 用户初始化有10个金币。 一次只能压一种图案,如果中了,所压金币翻倍,否则,损失金币。 如何用java 编程实现? 小弟我是初学者,希望有详细代码~!
...全文
196 11 打赏 收藏 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
JavaShooter 2010-04-09
  • 打赏
  • 举报
回复
代码应该自己写,这样才可以有进步。
思路如下:
1)可以定义一个枚举类,有八种变量以及对应的倍数
2)写一个方法game()
game方法可以根据用户的输入值,判断用户压的是哪一个图案,再使随机器产生的是一个图案值,这个值可以相比较,如果正确,金币翻对应图案的倍数。否则失去。
  • 打赏
  • 举报
回复
啊,初学者,最好自己慢慢实现。你会学到很多东西。
麦穗 2010-04-09
  • 打赏
  • 举报
回复


还是自己写比较好!
keeya0416 2010-04-09
  • 打赏
  • 举报
回复
按楼主要求写了递归的
下班了着急回家 输入格式不对异常后程序终止 没有继续
懒得改了

package com.keeya.csdn.test;

import java.util.Random;
import java.util.Scanner;

/*
*
用java 中的递归实现苹果机~ 苹果机:
共有八种图案,分别为
苹果(2倍) 桔子(4倍)
铃铛(6倍) 木瓜(6倍)
西瓜(8倍) 双星(10倍)
双七(12倍)大王(14倍)
用户初始化有10个金币。
一次只能压一种图案,如果中了,所压金币翻倍,
否则,损失金币。 如何用java 编程实现?
小弟我是初学者,希望有详细代码~!
*/
public class PlayGame {
public static void main(String[] args) {
PlayGame pg = new PlayGame();
pg.play();
}

// 用 1 2 3 ... 代替 苹果,桔子... public static
private int money;

private Scanner sc;

private Random rd;

public PlayGame() {
money = 10;
sc = new Scanner(System.in);
rd = new Random();
}

public void play() {
int in = 0, choice = 0;
System.out.println("请压注");
try {
in = sc.nextInt();
} catch (Exception e) {
System.out.println("输入格式不对,重新开始");
return;
}

System.out.println("请选择压什么");
try {
choice = sc.nextInt();
} catch (Exception e) {
System.out.println("输入格式不对,重新开始");
return;
}
// 用户输入的大于7 直接给取模,保证在 [1,7]
// 这里投机了下懒的写switch语句了
// 直接用的1到7 生成 2 到 14倍 没有2个 6倍了
if (choice % 7 + 1 == rd.nextInt(7) + 1) {
money += (2 * (choice % 7 + 1) - 1) * in;
System.out.println("恭喜你,压对了;赢了[" + 2 * choice + "]倍,你还有[" + money
+ "]大洋");
} else {
money -= in;
System.out.println("压错了,扣除[" + in + "]大洋,你还有[" + money + "]大洋");
}
if (money == 0) {
System.out.println("你输光了,下次再来吧");
} else {
System.out.println("退出请输入[exit],任意键继续");
if ("exit".equals(sc.next()))
return;
play();
}
}
}

Achilles_Dynasty 2010-04-09
  • 打赏
  • 举报
回复
谢七楼,没有注意数组边界。改进后代码:

package action;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class test {

public int money = 10; //你的钱,初始金额。
public String[] stroption = {"apple","orange","lingdang","mugua","xigua","shuangxing","shuangqi","dawang"};//length 为8
public int[] iOption = {2,4,6,6,8,10,12,14}; //length 为8
public int getSystemOption()
{
return (int)(Math.random()*(iOption.length + 1)); //范围[0,9)
}

public void game(int imoney){
while(imoney >money || imoney <=0){
System.out.println("输入金额不合法或余额不足,您的余额是:"+money);
System.out.println("请输入钱,回车结束");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
String input = br.readLine();
imoney = Integer.parseInt(input);
} catch (Exception e) {
//e.printStackTrace();
System.out.println("输入金额不合法");
}
}
int opt = getSystemOption();// 范围:[0,9)
if(opt >= stroption.length ){ // opt = 8
System.out.println("你没中,扣去" + imoney);
money -= imoney;
}
else{
System.out.println("你选中了" + stroption[opt] + ",得到" + imoney*iOption[opt]);
money += imoney*iOption[opt];
}
System.out.println("你的余额是"+money);

if(money<0)
return ;
else{
System.out.println("请输入钱,回车结束");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
String input = br.readLine();
int iOption = Integer.parseInt(input);
game(iOption);
} catch (Exception e) {
System.out.println("输入金额不合法");
}
}

}

public static void main(String[] args) {
new test().game(0);
}

}
zings 2010-04-09
  • 打赏
  • 举报
回复
算法问题。。。
jacky花园 2010-04-09
  • 打赏
  • 举报
回复
输入金额不合法或余额不足10
请输入钱,回车结束
1
你没中,扣去1
你的余额是9
请输入钱,回车结束
2
你选中了shuangqi,得到20
你的余额是29
请输入钱,回车结束
3
你选中了xigua,得到18
你的余额是47
请输入钱,回车结束
4
你选中了dawang,得到48
你的余额是95
请输入钱,回车结束
5
你选中了xigua,得到30
你的余额是125
请输入钱,回车结束
6
你没中,扣去6
你的余额是119
请输入钱,回车结束
7
你选中了dawang,得到84
你的余额是203
请输入钱,回车结束
8
你选中了dawang,得到96
你的余额是299
请输入钱,回车结束
9
你选中了orange,得到36
你的余额是335
请输入钱,回车结束
1
你选中了orange,得到4
你的余额是339
请输入钱,回车结束
2
你没中,扣去2
你的余额是337
请输入钱,回车结束
3
你选中了orange,得到12
你的余额是349
请输入钱,回车结束
4
你选中了orange,得到16
你的余额是365
请输入钱,回车结束
5
你选中了orange,得到20
你的余额是385
请输入钱,回车结束
6
你选中了shuangxing,得到48
你的余额是433
请输入钱,回车结束
7
你选中了shuangxing,得到56
你的余额是489
请输入钱,回车结束
8
你没中,扣去8
你的余额是481
请输入钱,回车结束
9
你没中,扣去9
你的余额是472
请输入钱,回车结束
0
输入金额不合法或余额不足472
请输入钱,回车结束
1
你选中了shuangqi,得到10
你的余额是482
请输入钱,回车结束
1
你选中了mugua,得到6
你的余额是488
请输入钱,回车结束
1
你选中了xigua,得到6
你的余额是494
请输入钱,回车结束
1
你选中了mugua,得到6
你的余额是500
请输入钱,回车结束
1
你选中了dawang,得到12
你的余额是512
请输入钱,回车结束
1
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
at TigerMatching.game(TigerMatching.java:27)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.game(TigerMatching.java:42)
at TigerMatching.main(TigerMatching.java:59)
jacky花园 2010-04-09
  • 打赏
  • 举报
回复
lz捌是递归
这个也不需要递归吧
搞个随机数
搞个循环每个判断就ok
Achilles_Dynasty 2010-04-09
  • 打赏
  • 举报
回复
if(imoney >money || imoney <=0){ //有bug,把if 改为while
System.out.println("输入金额不合法或余额不足"+money);
System.out.println("请输入钱,回车结束");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
String input = br.readLine();
imoney = Integer.parseInt(input);
} catch (IOException e) {
e.printStackTrace();
}
}
Achilles_Dynasty 2010-04-09
  • 打赏
  • 举报
回复
package action;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class test {

/**
* @param args
*/
public int money = 10; //你的钱,初始金额。
public void game(int imoney){
if(imoney >money || imoney <=0){
System.out.println("输入金额不合法或余额不足"+money);
System.out.println("请输入钱,回车结束");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
String input = br.readLine();
imoney = Integer.parseInt(input);
} catch (IOException e) {
e.printStackTrace();
}
}
int opt = getSystemOption() + 1;
if(opt > stroption.length){
System.out.println("你没中,扣去" + imoney);
money -= imoney;
}
else{
System.out.println("你选中了" + stroption[opt] + ",得到" + imoney*iOption[opt]);
money += imoney*iOption[opt];
}
System.out.println("你的余额是"+money);

if(money<0)
return ;
else{
System.out.println("请输入钱,回车结束");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
String input = br.readLine();
int iOption = Integer.parseInt(input);
game(iOption);
} catch (IOException e) {
e.printStackTrace();
}
}

}
public String[] stroption = {"apple","orange","mugua","xigua","shuangxing","shuangqi","dawang"};
public int[] iOption = {2,4,6,6,8,10,12,14};
public int getSystemOption()
{
return (int)(Math.random()*iOption.length);
}
public static void main(String[] args) {
new test().game(0);
}

}
kbyst 2010-04-09
  • 打赏
  • 举报
回复
有意思啊 楼主做好了分享一下

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧