Java if语句的应用(二)

来自CloudWiki
跳转至: 导航搜索

if 语句的延伸

if语句的嵌套

if语句的嵌套说的是,在已有的if语句里嵌套新的if语句。

例题:输入一个数,判断它是否是偶数和是否能被3整除

Scanner sc = new Scanner(System.in);
int t=sc.nextInt;
if(t%2==0){
   if(t%3==0){
       System.out.println("Divisible by 3 and 2");
   }else{
       System.out.println("divisible by 2 not divisible by 3");
   }
}else{
   if(t%3==0){
       System.out.println("divisible by 3 not divisible by 2")
   }else{
       System.out.println("not Divisible by 2 not divisible by 3");
   }
}

if语句的多条件

if (判断条件 op 判断条件 op ...) 
{ 
执行语句块1
}

if语句的判断条件里可以放置多个条件,彼此用逻辑运算符连接起来。

例:

package task4;

import java.util.Scanner;

public class Divide {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个整数:");
		int t=sc.nextInt();
		if(t%2==0 && t%3 ==0){		   
		       System.out.println("divisible by 2 and 3");
		   
		}
		
		System.out.println("处理完毕");
		sc.close();
	}

}

if...else if...多重语句

语法格式:

if (判断条件1) 
{ 
判断条件1为true时的执行语句块1
} else  if(判断条件2){
//判断条件1为false,判断条件2为true
判断条件2为true时的执行语句块2
} 
……  //可以有零个或多个else if语句
else {  //最后的else语句也可以省略
所有判断条件均为false时的执行语句块n+1
}


  • 使用if...else 计算客户的BMI值,体质指数(BMI)=体重(kg)÷(身高(m)*身高(m)),根据用户输入的身高和体重进行计算,如果BMI值低于18.5,显示“您的体重过轻”;如果BMI值值在18.5-23.9之间,显示“您的体型完全正常,请继续保持”;如果BMI值值在24-27之间,显示“您的体型有些超重”;如果BMI值在27以上,显示“您的体重严重超重,请加强锻炼!”
import java.util.Scanner;


public class mly {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		//获取用户对于菜单的选择
		String bmi = scanner.next();
		int value =  Integer.parseInt(bmi);
		if(value <18.5) {
		    System.out.println("您的体重过轻");
		}else if (value <23.9){//18.5<=value <23.9
		    System.out.println("您的体形完全正常");
		}else if (value <27){//24<=value <27
		    System.out.println("您的体重有些超重");
		}else{//value >=27
		    System.out.println("您的体重完全超重,请加强锻炼。");
		   }
		scanner.close();
		}
	}

实例:判断是否闰年

问题引出

例题:输入一个年份,判断它是不是闰年:

闰年是公历中的名词。
普通年(不能被100整除的年份)能被4整除的为闰年。(如2004年就是闰年,1999年不是闰年);
世纪年(能被100整除的年份)能被400整除的是闰年。(如2000年是闰年,1900年不是闰年);

算法分析

算法分析:

1.输入一个年份

2.看这个数能否被4整除,如果不能被4整除,则肯定不是闰年

3.如果这个数能被4整除,再看它是不是世纪年(能被100整除的年份)

  • 如果不是世纪年,则它肯定是闰年;
  • 如果是世纪年,则再看它能否被400整除:
    • 如果能被400整除:说明是闰年;
    • 如果不能被400整除,说明不是闰年。

if语句的嵌套

例题:输入一个年份,判断它是不是闰年:

闰年是公历中的名词。
普通年(不能被100整除的年份)能被4整除的为闰年。(如2004年就是闰年,1999年不是闰年);
世纪年(能被100整除的年份)能被400整除的是闰年。(如2000年是闰年,1900年不是闰年);


package task4;

import java.util.Scanner;

public class RunNian1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner s= new Scanner(System.in);
		System.out.println("请输入年份(2001-2099):");
		int year=s.nextInt();
		if (year%4 !=0) {
			System.out.println("该年份不是闰年");
		}else {
			//再看它是不是世纪年
			if(year%100 !=0) {
				System.out.println("该年份是闰年");
			}else {
				if(year%400 ==0) {
					System.out.println("该年份是闰年");
				}else {
					System.out.println("该年份不是闰年");
				}
			}
		}
	}

}
  • 练习:防疫检查站,根据人员身体情况打印是否通过。
  如果体温》37.3 不允许通过
  如果体温小于37.3 ,没有接触史 ,则打印允许通过
  如果体温小于37.3,有接触史,,则打印不允许通过
  如果体温小于37.3,有接触史,但是隔离天数已超14天,则打印允许通过


package task4;

import java.util.Scanner;

public class YiQing {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        //如果体温》37.3 不允许通过
		//如果体温小于37.3 ,没有接触史 ,则打印允许通过
		//如果体温小于37.3,有接触史,,则打印不允许通过
		//如果体温小于37.3,有接触史,但是隔离天数已超14天,则打印允许通过
		float temp; String s ;String isTouch;int days=14;
		Scanner sc= new Scanner(System.in);
		System.out.println("请输入您的体温:");
		s =sc.nextLine();temp =Float.valueOf(s);
		System.out.println("您是否与病例有密切接触史:y/n");
		s =sc.nextLine(); isTouch=s;
		System.out.println("如果是,您已自我隔离多少天?");
		s =sc.nextLine();if(isTouch.equals('y')) {days = Integer.valueOf(s);}
		System.out.println("体温:"+temp +" 密切接触史:"+isTouch + " 自我隔离天数:"+days);
                //在这里添加您的代码
		sc.close();
		///
		///
		
		
	}

}

if语句的多条件

例题:输入一个年份,判断它是不是闰年:

闰年是公历中的名词。
普通年(不能被100整除的年份)能被4整除的为闰年。(如2004年就是闰年,1999年不是闰年);
世纪年(能被100整除的年份)能被400整除的是闰年。(如2000年是闰年,1900年不是闰年);

算法分析:有两种条件

 //1. 能被4整除 且 不能被100整除 ;//2.能被400整除 是闰年

代码:

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub	
		
		Scanner in = new Scanner(System.in);		 
	        System.out.print("输入年份:");
	        int year = in.nextInt();	        
	        String str;
	        // 闰年二月份
	        if ( (year % 4 == 0 && year % 100 != 0)||(year % 400 == 0 ) ) {
	            str = "该年是闰年";
	        } else {
	        	str = "该年不是闰年";
	        }
	 
	        System.out.println(str);
	        in.close();
		}
	    
	

}

  • 姊妹题:输入一个年份,判断一年有多少天,
int[] DAYS = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
		
		 Scanner in = new Scanner(System.in);
		 
	        System.out.print("输入年份:");
	        int year = in.nextInt();
	        System.out.print("输入月份:");
	        int month = in.nextInt();
	 
	        String str = year + "-" + month + ":";
	 
	        // 闰年二月份
	        if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0) && month == 2) {
	            str += 29;
	        } else {
	            str += DAYS[month - 1];
	        }
	 
	        System.out.println(str);
	        in.close();
		}
	    


  • 练习:防疫检查站,根据人员身体情况打印是否通过。
  如果体温》37.3 不允许通过
  如果体温小于37.3 ,没有接触史 ,则打印允许通过
  如果体温小于37.3,有接触史,,则打印不允许通过
  如果体温小于37.3,有接触史,但是隔离天数已超14天,则打印允许通过


练习:如果手机价格低于2000,并且能分期付款;或者手机品牌是苹果的,那么我就买 练习:如果手机价格低于于2000,或者能分期付款;满足这一条件的同时,并且手机品牌是苹果的,那么我就买

if...else if ...多重判断

多重判断条件递进:

  • 能否被4整除,如果不能,直接判断是非闰年
  • 能否被100整除,如果能,直接判断是闰年
  • 能否被400整除,如果能,直接判断是闰年
package task4;

import java.util.Scanner;

public class RunNian3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner s= new Scanner(System.in);
		System.out.println("请输入年份(2001-2099):");
		int year=s.nextInt();
		if(year%4 != 0) {//不被4整除的情况
			System.out.println(year+"不是闰年");
		}else if(year%100 != 0) {//被4整除,不是世纪年的情况
			System.out.println(year+"是闰年");
		}else if(year%400 == 0) {//是世纪年,同时也能被400整除的情况
			System.out.println(year+"是闰年");
		}else {
			System.out.println(year+"不是闰年");//是世纪年,但不能被4整除的情况
		}
		
		s.close();
	}

}


  • 例2:当接收用户的输入为1时,输出“您选择了处理查询所有书籍的业务”;输入为2时,输出“您选择了处理按书籍编号查询”;输入为3时,输出“您选择了购买书籍”;否则输出“您的输入不正确,必须在1~6范围内!”。
Scanner scanner = new Scanner(System.in);
//获取用户对于菜单的选择
String value = scanner.next();
int choise = Integer.valueOf(value);
if(choice == 1) {
  System.out.println("您选择了处理查询所有书籍的业务");
} else if(choice == 2) {
  System.out.println("您选择了处理按书籍编号查询");
} else if(choice == 3) {
  System.out.println("您选择了购买书籍");
} else {
  System.out.println("您的输入不正确,必须在1~6范围内!");
}
  • 练习:防疫检查站,根据人员身体情况打印是否通过。
  如果体温》37.3 不允许通过
  如果体温小于37.3 ,没有接触史 ,则打印允许通过
  如果体温小于37.3,有接触史,,则打印不允许通过
  如果体温小于37.3,有接触史,但是隔离天数已超14天,则打印允许通过

Java练习题

1.完成‘猜数字’游戏的改进版,使玩家能连续多次输入 2.模仿例2,在控制台打印你程序的所有功能,然后让用户输入,打印用户的选择。 2.用if+逻辑运算符完成以下语句:

如果手机价格低于2000,那么我就买
如果手机价格低于2000,或者能分期付款,那么我就买
如果手机价格低于2000,并且能分期付款,那么我就买
如果手机价格低于2000,并且能分期付款,并且零首付,那么我就买
如果手机价格低于2000,并且能分期付款;或者手机品牌是苹果的,那么我就买
如果手机价格低于2000,或者能分期付款;满足这一条件的同时,并且手机品牌是苹果的,那么我就买

3.练习:应用if嵌套结构计算上一节中的例题:

当接收用户的输入时,如果监测指数小于100,就输出“空气质量很好,请自由活动!否则的话如果监测指数小于150,输出“空气质量轻度污染,请加强防护”,否则的话如果监测指数小于200,输出“空气中度污染,敏感人群留在室内”,否则的话就输出,“空气严重污染,所有人群留在室内”

练习题答案

计1 徐洁和苗璐瑶同学提供。

1.猜数字:

package lianxi;
import java.util.Scanner; 

public class Text { 

       public static void main(String[] args) {

              // TODO Auto-generated method stub   

             int num = 50;

              while(true){

                     Scanner scan = new Scanner(System.in);

                     System.out.println("输入数字:");

                     int t = scan.nextInt();

                     String str1 = (t > num) ?"你输入的数值偏大" :"你输入的数值偏小";

                     System.out.println("输入的数据为:" + str1);  
            }     

      }             
}

2. 手机购买:

package lianxi;

public class Text3 { 

       public static void main(String[] args) {

              // TODO Auto-generated method stub
              float price = 1999f;
              String name = "apple";
              boolean fenqi = true;
              int firstpay = 0;

              if(price<2000){
                     System.out.println("我就买");
              }else {
                     System.out.println("我bu买");
              }

              if (price<2000 && fenqi==true){
                     System.out.println("我就买");

              }else {
                     System.out.println("我bu买");
              }

              if (price<2000 && fenqi==true && firstpay==0){
                    System.out.println("我就买");

              }else {
                    System.out.println("我bu买");
              }

              if ((price<2000 && fenqi==true) || name=="apple"){
                    System.out.println("我就买");
              }else {
                    System.out.println("我bu买");
              }

              if ((price<2000 ||fenqi==true )&& name=="apple")){
                     System.out.println("我就买");
              }else {
                     System.out.println("我bu买");

              }

       }

}

3.空气质量:由计2 周浩同学提供

package lian;

import java.util.Scanner;

public class san {

 

       public static void main(String[] args) {

              // TODO Auto-generated method stub

              Scanner scan = new Scanner(System.in);

                 System.out.println("请输入监测指数:");

                 int t=scan.nextInt();

 

                 if(t<150){

                        if(t<100){

                             System.out.println("空气质量很好,请自由活动!");

                       }else{

                             System.out.println("空气质量轻度污染,请加强防护");

                       }

                 }else{

                       if(t<200){

                             System.out.println("空气中度污染,敏感人群留在室内");

                       }else{

                             System.out.println("空气严重污染,所有人群留在室内");

                       }

                 }

                 scan.close();

               }

              }

结果:

请输入监测指数:

99

空气质量很好,请自由活动!

返回 Java程序设计