java的关于流程结构做的几个案例
最近在学习中,做了一个java的几个案例,主要是九九乘法口诀,实心菱形和空心菱形的算法,模拟彩票程序以及BMI的测试标准等小案例。
一:九九乘法表
/** * 九九乘法口诀 */ public static void main(String[] args) { int sum = 0; // sum是乘法的结果 for (int i = 1; i <= 9; i++) { for (int n = 1; n <= i; n++) { sum = i * n; System.out.print(n+"*"+i+"="+sum+"\t"); } System.out.println("\n"); } }
二:空心菱形和实心菱形
/** * 输出的实心菱形和空心菱形的算法 */ public static void main(String[] args) { int hangshu = 11; int yiban = hangshu / 2 + 1; int yibanduo = hangshu / 2; System.out.println("空心菱形:"); for(int k = 1;k <= yiban;k++){ for(int i = 1;i <= (yiban - k);i++){ System.out.print(" "); } System.out.print("*"); for(int i = 1;i <= ( (k - 2) * 2 + 1);i++){ System.out.print(" "); } if(k != 1){ System.out.print("*"); } System.out.println(); } for(int k = yibanduo;k >=1;k--){ for(int i = 1;i <= (yiban - k);i++){ System.out.print(" "); } System.out.print("*"); for(int i = 1;i <= ( (k - 2) * 2 + 1);i++){ System.out.print(" "); } if(k != 1){ System.out.print("*"); } System.out.println(); } System.out.println("实心菱形:"); for(int i = 1;i <= hangshu;i++){ if(i <= hangshu/2 + 1){ for(int k = 1;k <= hangshu/2 + 1- i;k++){ System.out.print(" "); } for(int k = 1;k <= i;k++){ System.out.print("* "); } System.out.println(); }else{ for(int k =1;k <= (i -(hangshu/2 + 1));k++){ System.out.print(" "); } for(int k = 1;k <= (2 *(hangshu/2 + 1) - i);k++){ System.out.print("* "); } System.out.println(); } } }
三 :BMI的测试标准
import java.io.*; public class WeightTest { /* 测试你的体重的标准 BMI的测试标准 标准体重:22* 身高的平方(米) 体重指数:体重公斤/身高的平方 正常体重:体重指数18-25 超重 :体重指数25-30 轻度肥胖:体重指数>30 中度肥胖:体重指数>35 重度肥胖: 体重指数>40 */ /* testWeight 封装了BMI测试的方法 */ public void testWeight() throws IOException{ /* 获得输入的体重,身高 */ InputStreamReader ist = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(ist);//创建字符流对x象 System.out.println("请输入体重(单位公斤)"); String w = br.readLine();//读取体重 System.out.println("请输入身高(单位为米)"); String h = br.readLine();//读取身高 /* 把从键盘输入的身高转换成double类型*/ double weight = Double.parseDouble(w); double high = Double.parseDouble(h); /*计算对应的标准体重和体重指数*/ double nomalWeight = 22 * high * high;//计算对应的标准体重 double BMI = weight/(high*high);//体重指数 System.out.println("你身高对应的标准体重是"+nomalWeight+"\n"); System.out.println("你的体重指数"+BMI+"\n"); /* 你的体重标准*/ if(BMI>=18&&BMI<=25.0) System.out.println("你的体重很标准,继续保持!"+"\n"); else if(BMI>25&&BMI<=30) System.out.println("你的体重有点超重,请注意哦!"+"\n"); else if (BMI>30&&BMI<=35) System.out.println("你的体重有点轻度肥胖,应该注意锻炼身体哦!"+"\n"); else if (BMI>35&&BMI<=40) System.out.println("你的体重有点中度肥胖,要经常锻炼身体哦!"+"\n"); else if (BMI>40) System.out.println("你的体重有点重度肥胖,应该加强锻炼身体哦!"+"\n"); else System.out.println("没有可靠的数据,请确认数据是否正确!"+"\n"); } /* testContinue 判断是否继续执行程序*/ public boolean testContinue() throws IOException{ InputStreamReader ist = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(ist);//创建字符流对x象 String result = null; //用来获取result来的对象 boolean bool = false; while(true){ System.out.println("是否继续测试你的体重指数(yes/no)"); result = br.readLine(); if(result.equalsIgnoreCase("yes")) { bool = true; break; } else if(result.equalsIgnoreCase("no")) { bool = false; break ; } else{ System.out.println("输入的数据只能是yes/no,请重新输入!"); continue; } } return bool ; } public static void main(String[] args) throws IOException { boolean boole = false;//创建boolean对象,判断是否执行语句! WeightTest wt = new WeightTest();//创建WeightTest对象 //执行测试体重 do{ wt.testWeight(); boole = wt.testContinue(); }while(boole); System.out.println("谢谢你的使用,祝福你天天有一个好心情!"); } }
在这个程序中可以多次循环来测试多人的体重指数,但是在循环语句编写时有点繁琐,其实可以使用递归的算法来解决。在这里就不在编写了。来通过下面的那个例子来看一下递归的使用
四 :模拟彩票程序
import java.util.Scanner; public class LotterTickerTest { /** * 这个程序主要实现了的是模拟随机彩票的程序。它可以选择从35位整数中选择六位 * 数字为一组数字。首先在先从键盘输入1-5的数字,确定产生的随机数字。从35位 * 数中产生6为数字,存放在数组中。数组可以存放相同类型的数据。 */ public static void main(String[] args) { int number = 0; Scanner input = new Scanner(System.in); System.out.println("请输入一个数字1-5"); String s = input.next(); number = Integer.parseInt(s);//把输入的数字转换成int类型的 if(number<=5){ int m = 0 ;//初始化彩票输入的次数 int a[] = new int[6];//创建一个一个长度为6的数组 for(int i = 0;i<number;i++){ m= m+1 ;//第一次随机的产生的彩票数字 /* * n 代表的是 数组的下标 */ for(int n= 0;n<6;n++){ a[n]= (int)(Math.random()*35+1);//进行随机产生35以内的数字,存在数组中 //如果产生的数字相同,则i-1,重新选择数据 for(int j = 0 ;j<n;j++){ if(a[n]==a[j]){ n--; continue; } } } //在第一次产生的彩票号码之前打出号码 if(m==1) System.out.println("35选6的号码是:"); else System.out.println(""); //循环遍历彩票的号码 for(int k = 0 ;k<6;k++){ System.out.print(a[k]+"\t"); } } }else{ System.out.println("输入的数字超出范围,请重新输入!"); } } }
下面的这个程序主要有递归的使用,主要用于输入时的数字超出范围。在下面的会重点标出。
import java.util.Scanner; public class LotterTickerTest { /** * 这个程序主要实现了的是模拟随机彩票的程序。它可以选择从35位整数中选择六位 * 数字为一组数字。首先在先从键盘输入1-5的数字,确定产生的随机数字。从35位 * 数中产生6为数字,存放在数组中。数组可以存放相同类型的数据。 */ public void randomTest(){ int number = 0; Scanner input = new Scanner(System.in); System.out.println("请输入一个数字1-5"); String s = input.next(); number = Integer.parseInt(s);//把输入的数字转换成int类型的 if(number<=5){ int m = 0 ;//初始化彩票输入的次数 int a[] = new int[6];//创建一个一个长度为6的数组 for(int i = 0;i<number;i++){ m= m+1 ;//第一次随机的产生的彩票数字 /* * n 代表的是 数组的下标 */ for(int n= 0;n<6;n++){ a[n]= (int)(Math.random()*35+1);//进行随机产生35以内的数字,存在数组中 //如果产生的数字相同,则i-1,重新选择数据 for(int j = 0 ;j<n;j++){ if(a[n]==a[j]){ n--; continue; } } } //在第一次产生的彩票号码之前打出号码 if(m==1) System.out.println("35选6的号码是:"); else System.out.println(""); //循环遍历彩票的号码 for(int k = 0 ;k<6;k++){ System.out.print(a[k]+"\t"); } } }else{ System.out.println("输入的数字超出范围,请重新输入!"); randomTest(); } } public static void main(String[] args) { LotterTickerTest lt = new LotterTickerTest(); lt.randomTest(); } }