1、猜猜看游戏优化
将猜猜看游戏switch代码部分进行优化
先定义一个字符串String tmp_digit
然后将Math.random()*5+1变成字符串并转化成%f,保留两位小数
将digit转变成float类型
digit=Float.parseFloat(tmp_digit);
import java.util.Scanner; public class Guest1 { public static void main(String[] args) { // 定义全局变量,user用户名,digit系统生成的价格 String user; //float类型赋初值尾部一定要加上f,不然小数会报错 float digit=0.00f; System.out.println("***********************"); System.out.println(" 幸运猜猜看"); System.out.println(" 版本:v1.1"); System.out.println("***********************"); System.out.println("输入用户名"); Scanner input=new Scanner(System.in); /*先接收回车,在这步用户敲任何数据都不接收,这句没有接收,原因用户敲任何内容不需要保存 input.nextLine();*/ user= input.next(); System.out.println(user+",hello,请选择你要猜的类别"); //输出类别 System.out.println("***********************"); System.out.println("1--------骰子(1-6)"); System.out.println("2--------扑克牌(1-13)"); System.out.println("***********************"); System.out.println("结果有两位小数,请按正确形式猜测如(1.1,1.11)"); String user_choice=input.next(); //条件语句有确定值用switch switch(user_choice){ case"1": //只能产生整数,不需要round,经过round计算后是double类型,当前digit也不是两位小数 //需要用到格式化的方法,先把Math.random()*5+1变成字符串,字符串转化成%f,保留两位小数 //这里先产生一个临时的字符串,可以调用String.format,使用%.2f String tmp_digit=String.format("%.2f",Math.random()*5+1); //之后再把digit转化成float类型,不同类型之间转换调用类型的大写.parse类型 digit=Float.parseFloat(tmp_digit); // System.out.println(digit); break; case"2": //先定义一个临时变量,格式化字符串两位小数 tmp_digit=String.format("%.2f",Math.random()*12+1); //再使用Float.parseFloat不同类型之间转化方法转化成float类型 digit=Float.parseFloat(tmp_digit); // System.out.println(digit); break; default: digit=Math.round(Math.random()); } System.out.println("请猜结果:"); //设置变量-用户输入价格 float user_digit= input.nextFloat(); //设定一个最终输出不同信息的标志位 boolean flag=true; while(!(user_digit==digit)){ if(user_digit<=0){ flag=false; break; } if(user_digit>digit){ System.out.println("往小了猜"); }else{ System.out.println("往大了猜"); } //循环继续 user_digit= input.nextFloat(); } if(flag){ System.out.println("成功了,请回吧"); }else{ System.out.println("很遗憾,加油吧少年,未来在等着你"); } } }
2、九九乘法表
使用for循环(双重循环)
第一种双重循环,达到某一条件打印
第二种双重循环使用break,减少不必要的循环
第三种循环用continue
三种循环差别不大,主要是对双重循环的熟悉使用和对break、continue两个的理解’
以下是其中一个完整代码
public class Nine { public static void main(String[] args) { //产生笛卡尔积相乘的两个数字,这就是双重循环 for(int i=1;i<10;i++){ for (int j=1;j<10;j++){ //满足条件的打印,根据去掉部分的特点,j>i的不打印,只打印j<=i System.out.print(j+"*"+i+"="+i*j+"\t"); if(j==i){ break; } } System.out.println(); } } }
最后简单说下break和continue
break退出:退出一层循环,改变当前层的循环次数
continue退出:退出当前循环的次数,继续下次循环,不改变总体的循环次数
共同点:都不执行循环体中后面的语句
不同点:continue结束当前,break结束本层循环