改进的内容是在系统随机给出价格做出改进,可以使系统给出小数
switch(user_choice){ case "1": //这里先产生一个临时的字符串,可以调用String.format,使用%.2f String tmp_price=String.format("%.2f",Math.random()*1000+1000); //之后再把tmp_price转化成float类型,不同类型之间转换调用类型的大写.parse类型 plan_price=Float.parseFloat(tmp_price); // System.out.println(plan_price); break; case "2": //先定义一个临时变量,格式化字符串两位小数 tmp_price=String.format("%.2f",Math.random()*99+1); //再使用Float.parseFloat不同类型之间转化方法转化成float类型 plan_price=Float.parseFloat(tmp_price); // System.out.println(plan_price); break; default: //先定义一个临时变量,格式化字符串两位小数 tmp_price=String.format("%.2f",Math.random()*10000); //再使用Float.parseFloat不同类型之间转化方法转化成float类型 plan_price=Float.parseFloat(tmp_price); }
还有改进的地方是在用户输入价格后,对用户的输入做判断,matches("^[0-9]+(.[0-9]{1,2})?$")是正则表达式,[0-9]表示0-9数字出现任意一个,()是可选项,()里面的内容可以有也可以没有,{1,2}小数点后面的位数只能1位或者是2位。
//注意while里面匹配小数的正则,不匹配取非(!) while(!tmp_user_price.matches("^[0-9]+(.[0-9]{1,2})?$")){ System.out.println("你输入的价格有问题,请检查输入价格:"); tmp_user_price=scanner.next(); }