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程序设计