题来了
看不懂的先看上一篇
现有电视商品价格竞猜活动,活动的规则:随机出现一个商品名,用户猜测它的价值,如果在规定次数内猜对,便可获得此商品。模拟竞猜活动,运行结果如下所示: (选作)
分析:
1、准备一批用来竞猜的商品
2、随机获取一件商品
Java程序:
1、定义对象所归属的类:商品类–Goods(属性: 商品的名称String name 商品对应的实际单价 int price)
2、模拟购入一批商品
多个Goods对象
3、
请猜测“公主电动车”的价格:1000
再大点!
再猜一次吧:5000
再小点!
再猜一次吧:2500
在小点!
再猜一次吧:2200
4次内没有猜对,下次努力吧!
参考实现步骤如下:
定义类QuessMachine,编写它的initial()方法预定义商品信息,根据产生的随机数字,选定一款竞猜的商品
编写QuessMachine类的guess()方法,如果猜测正确,返回“猜对了!”;如果偏大,返回“再小些”;如果偏小,返回“再大些!”
编写测试类模拟竞猜
别吓跑了
看到了题目先不要被吓到 再看一眼实在不行再溜 慢慢来 先看要求
入手
代码还不知道怎么写先把类建好
被我灵魂一画Goods类就建好啦 这里的Goods是有参构造方法哦
下面的ShowInfo()则是实例方法
先给大家介绍一下有参构造赋值问题
Goods goods1 = new Goods(“冰箱”, 2000);
有参构造方法会默认覆盖无参构造方法如果后面小括号不加东西可是会报错的,也可以通过在写一个无参构造方法来让他不报错类似这样
public Goods() {
}
当参数传入到对象goods1时就将"冰箱"赋值给了name,2000赋值给了price就等于说实现了
那我们不妨再买多一点
Goods goods1 = new Goods("冰箱", 2000);
Goods goods2 = new Goods("洗衣机", 2200);
Goods goods3 = new Goods("空调", 1000);
Goods goods4 = new Goods("电话", 7000);
Goods goods5 = new Goods("电脑", 5000);
那么多对象一个一个弄好麻烦参考我类和对象中对 (对象数组)的理解
Goods[] gs ={goods1,goods2,goods3,goods4,goods5 };
那这里gs[0].name就等于是冰箱咯没问题吧
那我们只用控制随机数0-5就可以控制抽奖了可随机数random()不是只能控制到0-1的吗 我们把它*5再四舍五入不就行了
int b = (int) Math.floor(Math.random()*5); // 完美
Goods goods = gs[b];
// 再创界一个Goods对象来存取出来值把值给name和price
// 不然
//String name=gs[b] 随机一次
//int price=gs[b] 又随机一次
String name=goods.name;
int price=goods.price;
那到这我们的initial()方法就写完咯
private static Goods initial() { //静态的哦 方便用类名. 来调用
Goods goods1 = new Goods("冰箱", 2000);
Goods goods2 = new Goods("洗衣机", 2200);
Goods goods3 = new Goods("空调", 1000);
Goods goods4 = new Goods("电话", 7000);
Goods goods5 = new Goods("电脑", 5000);
Goods[] gs = new Goods[5];
gs[0] = goods1;
gs[1] = goods2;
gs[2] = goods3;
gs[3] = goods4;
gs[4] = goods5;
int b = (int) Math.floor(Math.random()*5);
Goods goods = gs[b];
return goods; //返回值这里的返回值是一个对象因为可以直接用goods.name这样直接取值方便一些的对应的 定义方法的时候 initial()前面是Goods
}
那咱们最后就差那个猜数字了这个应该对大家来说不难
猜数字
public static void Guess(String name, int price){
Scanner scanner = new Scanner(System.in);
for (int i = 0; i <4 ; i++) {
int a=scanner.nextInt();
if (a>price){
System.out.println("猜大了,再小一点");
}else if (a<price){
System.out.println("猜小了,再大一点");
}else if (a==price){
System.out.println("猜对了,送"+name+"你了"); } }
System.out.println("猜了4次了,不能猜了");
}
那主函数应该写啥,我去我方法都给你们写完咯主函数你们不会**???**
方便大家
public class OnessMachine {
public static void main(String[] args) {
System.out.println(initial().name + "" + initial().price);
Guess(initial().name, initial().price);
}
private static Goods initial() {
Goods goods1 = new Goods("冰箱", 2000);
Goods goods2 = new Goods("洗衣机", 2200);
Goods goods3 = new Goods("空调", 1000);
Goods goods4 = new Goods("电话", 7000);
Goods goods5 = new Goods("电脑", 5000);
Goods[] gs = new Goods[5];
gs[0] = goods1;
gs[1] = goods2;
gs[2] = goods3;
gs[3] = goods4;
gs[4] = goods5;
int b = (int) Math.floor(Math.random() * 5);
Goods goods = gs[b];
return goods;
}
public static void Guess(String name, int price) {
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < 4; i++) {
int a = scanner.nextInt();
if (a > price) {
System.out.println("猜大了,再小一点");
} else if (a < price) {
System.out.println("猜小了,再大一点");
} else if (a == price) {
System.out.println("猜对了,送" + name + "你了");
}
}
System.out.println("猜了4次了,不能猜了");
}
}
下篇给大家介绍封装