这里使用的类型是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");
}
}
运算结果你们猜了多久?你们一定很快就猜对了吧!