JAVA 第五课 ******优化商品价格猜猜猜******

这里使用的类型是float类型, 价格要产生两位的小数

只能产生整数,Math.round是四舍五入

plan_price=Math.round(Math.random()*1000+1000);

注意:float类型数据注意的地方

(1)float类型在定义赋初值的时候,后面跟上一个f

float plan_price=0.00f;

 (2)一般的float类型需要格式化,printf或者String.format

 System.out.printf("%.3f",d);

或者String.format(“%.3f”,d)

这里.3f表示小数位数是3位,这里的3可以换成0,换成0就没有小数,默认去掉后面的位数使用四舍五入的方法。

(3)float 由于后台存储精度的问题,一般做加减乘除运算不准确。

   由于精度的原因,后台运算加减乘除是不准确的。

  (4)对于精度高的数字,不要轻易做比较运算。

(5)由于精度的问题,注意对float和double的转换,不要做把float类型转成double。

  (6)++运算和—运算也不要放在double类型上。

运算结果不是简单的加1,后面的数字也有改变,限定小数位数。

总结:对于double或者float类型,不要轻易做转化和运算,做转化和运算前做小数位数的限定。

代码如下:

import java.util.Scanner;

public class test_guest_price {
    public static void main(String[] args) {

        String username;

        float plan_price=0.00f;

        System.out.println("----------------------------");
        System.out.println(" 游戏: 幸运价格猜猜猜");
        System.out.println("                 作者:XXXXX");
        System.out.println("                 版本:v1.1");
        System.out.println("----------------------------");
 
        Scanner scanner = new Scanner(System.in);

        scanner.nextLine();

        System.out.println("请输入用户名字");

        username=scanner.next();
  
        System.out.println(username+",欢迎进入游戏空间,现在请选择的价格猜猜猜商品的类别");

        System.out.println("***********************");
        System.out.println("1------家电(1000-2000)");
        System.out.println("2------文具(1-100)");
        System.out.println("***********************");

        String user_choice=scanner.next();


        switch(user_choice){
            case "1":

                String tmp_price=String.format("%.2f",Math.random()*1000+1000);
 
                plan_price=Float.parseFloat(tmp_price);
               System.out.println(plan_price);
                break;
            case "2":
   
                tmp_price=String.format("%.2f",Math.random()*99+1);
       
                plan_price=Float.parseFloat(tmp_price);
               System.out.println(plan_price);
                break;
            default:

                tmp_price=String.format("%.2f",Math.random()*10000);
   
                plan_price=Float.parseFloat(tmp_price);
        }

        System.out.println("请用户输入猜猜猜的价格:");

       float user_price=scanner.nextFloat();

        String tmp_user_price=scanner.next();

        while(!tmp_user_price.matches("^[0-9]+(.[0-9]{1,2})?$")){
            System.out.println("你输入的价格有问题,请检查输入价格:");
            tmp_user_price=scanner.next();
        }

        float user_price=Float.parseFloat(tmp_user_price);

        boolean flag=false;

        while(!(user_price==plan_price)){

            if(user_price<=0) {

                flag=true;
   
                break;
            }
 
            if(user_price>plan_price){
                System.out.println("猜大了");
            }else{
                System.out.println("猜小了");
            }

           user_price=scanner.nextFloat();

            tmp_user_price=scanner.next();

            while(!tmp_user_price.matches("^[0-9]+(.[0-9]{1,2})?$")){
                System.out.println("你输入的价格有问题,请检查输入价格:");
                tmp_user_price=scanner.next();
            }
            user_price=Float.parseFloat(tmp_user_price);

        }
        if(flag){
            System.out.println("再接再励");
        }else{
            System.out.println("你真聪明");
        }
        System.out.println("对本系统的使用有什么宝贵意见,可以联系作者或者email");

    }
}


运算结果你们猜了多久?你们一定很快就猜对了吧!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值