目录
java中的if语句,属于选择结构。if语句又被称为分支语句/条件控制语句
java中的if语句,属于选择结构。if语句又被称为分支语句/条件控制语句
-
if语句的语法结构:四种编写方式
public class IfText01 { public static void main(String[] args){ //第一种:条件为真,执行java语句,如果条件为假,不执行并结束 if (true){ java语句 java语句 java语句 } //--------------------------------------------------------- //第二种:条件为真,执行第一个分支,反之,执行第二个分支 if (false){ java语句 java语句 java语句 }else{ java语句 java语句 java语句 } //----------------------------------------------------------------- //第三种:一直判断,直到出现为真,执行分支,执行之后,整个语句全部结束; // 或全部为假,分支不执行,整个if语句结束 if (false){ java语句 java语句 java语句 }else if(true){ java语句 java语句 }else if(true){ java语句 java语句 }else if(true){ java语句 java语句 }else if(true){ java语句 java语句 }else if(true){ java语句 java语句 } //-------------------------------------------------- //第四种:如果全部不成立,则执行最后的else分支。 if (false){ java语句 java语句 java语句 }else if(true){ java语句 java语句 }else if(true){ java语句 java语句 }else if(true){ java语句 java语句 }else if(true){ java语句 java语句 }else if(true){ java语句 java语句 }else{ java语句 java语句 } } }
-
重点:对于java中的if语句来说,只要有一个分支执行,整个if语句全部结束。
-
注意:第二种和第四种编写方式都带有else分支,这两种方式肯定会有分支执行。
第一种和第三种方式,可能全部不会执行
-
“所有的控制语句”都是可以嵌套使用的。只要合理嵌套就行。
注意:嵌套使用时,该缩进就要缩进,大部分情况下,使用大括号包围的需要缩进
public class IfText01 { public static void main(String[] args){ if(false){ if(false){ if(true){ } }else if(false){ } }else{ if(false){ } } } }
-
IF语句的分支只有一条java语句时,大括号可以省略不写。(不推荐省略,别人这样写能看懂就行)
public class IfText01{ public static void main(String[] args){ if(true/false){ 一条java语句 } if(true/false) 一条java语句 } }
练习
-
所在位置的五公里范围之内有肯德基的话,去KFC吃午饭
public class IfText01 { public static void main(String[] args){ //需求:所在位置的五公里范围之内有肯德基的话,去KFC吃午饭 //公里数 //double distance=5.1;//单位:KM 为假不执行 double distance=4.1;//为真,执行分支 //判断语句 if(distance<5){ System.out.println("去KFC吃饭"); } } }
-
假设系统给定;一个考生的成绩,成绩可能带有小数点,学生成绩范围在[0-100]
根据学生的成绩判断该学生的成绩等级
[90-100]A
[80-90) B
[70-80) C
[60-70) D
[0-60) E以上的逻辑判断采用if语句完成,应该怎么写
public class IfText01 { public static void main(String[] args){ //根据需求采用第三种结构 // double grade=90.0; // if(grade >= 90 && grade <= 100){ // System.out.println("该考生的考试成绩等级为:A"); // }else if(grade >= 80 && grade < 90){ // System.out.println("该考生的考试成绩等级为:B"); // }else if(grade >= 70 && grade < 80){ // System.out.println("该考生的考试成绩等级为:C"); // }else if(grade >= 60 && grade < 70){ // System.out.println("该考生的考试成绩等级为:D"); // }else if(grade >= 0 && grade < 60){ // System.out.println("该考生的考试成绩等级为:E"); // }//使用短路与,即左边的表达式为flase则右边的表达式不会再执行,效率更高 //================================================================================== //根据需求采用第四种结构 // double score=62.2; // if(score < 0 || score > 100){//使用短路或,左边的表达式为true则右边的不执行,效率更高 // System.out.println("对不起,您输入的考生成绩有误,请确认后重新输入"); // //保证学生成绩范围在[0-100] // }else if(score >= 90){ // System.out.println("该考生的考试成绩等级为:A"); // }else if(score >= 80){ // System.out.println("该考生的考试成绩等级为:B"); // }else if(score >= 70){ // System.out.println("该考生的考试成绩等级为:C"); // }else if(score >= 60){ // System.out.println("该考生的考试成绩等级为:D"); // }else{ // System.out.println("该考生的考试成绩等级为:E"); // } //可以使用第一种方式以完成需求,但是这种方式效率低。每一个都是不相关的,都是独立的 //每一个if语句都要判断一次 //================================================================================= double score=61; String grade="该考生的考试成绩等级为:E"; if(score>100 || score<0){ grade="该考生的考试成绩不合法,请确认后重新输入"; }else if(score >= 90){ grade="该考生的考试成绩等级为:A"; }else if(score >= 80){ grade="该考生的考试成绩等级为:B"; }else if(score >= 70){ grade="该考生的考试成绩等级为:C"; }else if(score >= 60){ grade="该考生的考试成绩等级为:D"; } System.out.println(grade); } }
-
需求:
假设系统给定一个人的年龄(这个年龄需要从键盘输入),
根据年龄判断这个人处于生命的哪个阶段,年龄范围必须在【0-150】
[0-5] 幼儿
[6-10] 少儿
[11-18] 青少年
[19-35] 青年
[36-55] 中年
[56-150] 老年public class IfText02 { public static void main(String[] args){ //1.接受用户键盘输入:年龄【输入时必须输入数字】 java.util.Scanner s = new java.util.Scanner(System.in); System.out.print("请输入您的年龄:");//输出提示信息,要不然用户根本不知道这里要干嘛 int age = s.nextInt();//停下来等待用户的输入,输入之后自动接收,赋值给age变量。 // System.out.println("age="+age); //2、根据需求进行业务逻辑判断 String year="老年"; if(age < 0 || age > 150){ year="您输入的年龄有误,请确认后重新输入"; }else if(age<=5){ year="幼儿"; }else if(age<=10){ year="少儿"; }else if(age<=18){ year="青少年"; }else if(age<=35){ year="青年"; }else if(age<=55){ year="中年"; } if(age < 0 || age>150){ System.out.println(year); }else{ System.out.println("您正处于生命的"+year+"阶段"); } //System.out.println("您正处于生命的"+year+"阶段"); //当age超范围时,输出:您输入的年龄有误,请确认后重新输入阶段 //============================================================================ // if(age < 0 || age > 150){ // System.out.println("您输入的年龄有误,请确认后重新输入"); // }else if(age>=56){ // System.out.println("您正处于生命的老年阶段"); // }else if(age>=36){ // System.out.println("您正处于生命的中年阶段"); // }else if(age>=19){ // System.out.println("您正处于生命的青年阶段"); // }else if(age>=11){ // System.out.println("您正处于生命的少年阶段"); // }else if(age>=6){ // System.out.println("您正处于生命的少儿阶段"); // }else if(age>=0){ // System.out.println("您正处于生命的幼儿阶段"); // } } }
-
equals方法是java.lang.Object类的方法
对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。有两种用法说明:
-
“==”比较两个变量本身的值,即两个对象在内存中的首地址。
(java中,对象的首地址是它在内存中存放的起始地址,它后面的地址是用来存放它所包含的各个属性的地址,所以内存中会用多个内存块来存放对象的各个参数,而通过这个首地址就可以找到该对象,进而可以找到该对象的各个属性)
-
“equals()”比较字符串中所包含的内容是否相同。
-
-
判断当前的天气
/* 需求: 判断当前的天气: 当外面下雨的时候: 带雨伞: 判断性别: 当性别为男:大黑伞 当性别为女:小花伞 当外面是晴天的时候: 判断天气温度: 天气温度再30°以上: 性别为男:带墨镜 性别为女:擦防晒霜 提示: 1.一定会用到嵌套 2.天气状况、温度、性别都需要从键盘键入 */ public class IfText03 { public static void main(String[] args){ System.out.println("欢迎使用本系统,您可以在出门前使用本系统以判断带些什么东西"); java.util.Scanner s = new java.util.Scanner(System.in); System.out.print("您所在地方天气是晴天还是雨天:"); String weather=s.next(); if(weather.equals("雨天")){ System.out.println("您的性别"); String gender=s.next(); if(gender.equals("男")){ System.out.println("您需要带一把大黑伞"); }else if(gender.equals("女")){ System.out.println("您需要带一把小花伞"); }else{ System.out.println("亲是人妖吗"); } }else if(weather.equals("晴天")){ System.out.println("室外的温度"); int tem=s.nextInt(); if(tem > 30){ System.out.println("您的性别"); String gender=s.next(); if(gender.equals("男")){ System.out.println("您出门前需要戴个墨镜"); }else if(gender.equals("女")){ System.out.println("您出门前需要涂防晒霜"); }else{ System.out.println("亲是人妖吗"); } }else{ System.out.println("请您出门请穿个大棉袄"); } }else{ System.out.println("请看清楚问题呢亲"); } } }
-
判断年份是否为闰年
判断是a是否整除b,余数为0就是整除,a%b0:判断是否整除。a能被b整除:a%b0
import java.util.Scanner; public class Work05162 { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.print("输入年份: "); int year = input.nextInt(); System.out.print("输入月份:"); int month = input.nextInt(); if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){ System.out.println(year+"年"+month+"月有31天"); } else if(month==2&&(year%4==0&&year%100!=0||year%400==0)){ System.out.println(year+"年"+month+"月有29天"); //判断是否为闰年 } else if(month==2&&(year%4!=0||year%100==0&&year%400!=0)) { System.out.println(year+"年"+month+"月有28天"); //判断是否为平年,条件是判断闰年条件的完全取反,包括所有运算符和关系 } else if(month==4||month==6||month==9||month==11){ System.out.println(year+"年"+month+"月有30天"); } else { System.out.println("您输入的月份有误"); } } }
-
交换数据
public class Work0515 { public static void main(String[] args) { int left=4; int right=5; System.out.println("交换前双手的值"); System.out.println("左手的值:"+left); System.out.println("右手的值:"+right); //交换: int middle; middle=left; left=right; right=middle; System.out.println("交换后双手的值"); System.out.println("左手的值:"+left); System.out.println("右手的值:"+right); } }
-
检测x,y在哪个象限
import java.util.Scanner; public class Work05182 { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.print("请输入x="); double x=input.nextDouble(); System.out.print("请输入y="); double y=input.nextDouble(); if(x > 0 && y > 0){ System.out.print("("+x+","+y+")在第一象限"); }else if(x < 0 && y > 0){ System.out.print("("+x+","+y+")在第二象限"); }else if(x < 0 && y < 0) { System.out.print("("+x+","+y+")在第三象限"); }else { System.out.print("("+x+","+y+")在第四象限"); } System.out.print("程序结束!"); } }
-
两个数的自由运算
import java.util.Scanner; public class Work05183 { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.print("请输入第一个操作数"); double a=input.nextDouble(); System.out.print("请输入第二个操作数"); double b=input.nextDouble(); System.out.print("请输入运算符"); String c=input.next(); if(c.equals("+")) { System.out.println(a+c+b+"="+(a+b)); }else if(c.equals("-")) { System.out.println(a+c+b+"="+(a-b)); }else if(c.equals("*")) { System.out.println(a+c+b+"="+(a*b)); }else if(c.equals("/")) { System.out.println(a+c+b+"="+(a/b)); }else if(c.equals("%")) { System.out.println(a+c+b+"="+(a%b)); } System.out.println("程序结束"); } }
-
if语句中只包含一句java语句时
public class IfText04 { public static void main(String[] args){ boolean sex= true; // if(sex){ // System.out.println("男"); // }else{ // System.out.println("女"); // } //当if语句只有一句时,大括号可以省略不写, //if(sex) System.out.println("男"); else System.out.println("女"); // if(sex) System.out.println("男");//if语句不加大括号,只包含一条java语句,程序编译到这里自动在if后的第一条语句后加大括号 System.out.println("呵呵");//这一句是输出语句,不包含在if里。不管以上if是true还是false都会执行此语句 // System.out.println("呵呵"); //正常情况下以上语句应该这么写,但这里是为了迷惑所以写成以上形式 else//程序运行到这里时出错,因为编译器只检查语法,在没有加大括号的if语句中,执行到if时,只包含后面的一条语句。 //而这里相当于单独使用了else语句,而java中没有这种语法,所以编译在这里报错 System.out.println("女"); } }