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();
	}

}

          

 

 

posted @ 2013-11-14 20:31  pangbangb  阅读(288)  评论(0编辑  收藏  举报