顺序语句
语句:使用分号分隔的代码称作为一个语句。
注意:没有写任何代码只是一个分号的时候,也是一条语句,称作空语句。
顺序语句就是按照从上往下的顺序执行的语句。
判断语句(if...else)
什么是判断语句:用于判断的语句叫判断语句。
格式一
if(判断条件){
如果符合条件执行的代码;
执行的代码块1;
执行的代码块2;
……………….;
执行的代码块n;
}
例:提示用户输入一个整数。如果该整数是5的倍数,打印“5的倍数”如果是2的倍数打印“2的倍数”
提示:为了便于让用户输入数据,我们使用Scanner这个类,固定用法Scanner sc=new Scanner(System.in);该类需要导入包import java.util.Scanner;
int nextInt =sc.nextInt();获取用户输入的数字
import java.util.Scanner; public class Demo9 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int nextInt = sc.nextInt(); if(nextInt%5==0){ System.out.println("是5的倍数"); } if(nextInt%2==0){ System.out.println("是2的倍数"); } } } |
格式二
if(判断条件){
执行的代码块1;
执行的代码块2;
……………….;
执行的代码块n;
}else{
执行的代码块1;
执行的代码块2;
……………….;
执行的代码块n;
}
例:判断一个整数是奇数还是偶数
public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个整数:"); int nextInt = sc.nextInt(); if (nextInt % 2 == 0) { System.out.println("是偶数"); } else { System.out.println("是奇数"); } System.out.println("over"); } |
同样道理如果花括号中只有一条语句,那么花括号可以省略不写,初学者不推荐省略。
public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个整数:"); int nextInt = sc.nextInt(); if (nextInt % 2 == 0) System.out.println("是偶数"); else System.out.println("是奇数");
System.out.println("over"); } |
观察发现if else语句有点类似于三元运算符.其实三元运算符是if else 的一种简写格式.
Public static void main(String[] args) { int x = 0, y = 1, b; // if else 语句 if (x > y) { b = x; } else { b = y; } System.out.println(b);// 1 // 3元运算 b = x > y ? x : y; System.out.println(b); // 1 } |
这两种格式是一样的。if else 结构 简写格式:变量 = (条件表达式)?表达式1:表达式2;
三元运算符:
好处:可以简化if else代码。
弊端:因为是一个运算符,所以运算完必须要有一个结果。
格式三
if(判断条件1){
执行的代码块1;
}else if(判断条件2){
执行语句;
}else if(判断条件3){
执行语句;
}
需求: 根据用户定义的数值不同,打印对应的星期英文。if 只能进行一层判断,if else 只能进行两层判断,那么需要多层判断时呢?星期可是有7个数的。如何设计代码?
使用if 语句
public static void main(String[] args) { int x = 8; if (x == 1) { System.out.println("星期一"); } if (x == 2) { System.out.println("星期二"); } if (x == 3) { System.out.println("星期三"); } } |
如果这样设计的话,第一个if语句执行完毕后,第二个语句仍会执行(去判断),是一个顺序结构.那么事实上当前定义的星期之后会有一个.假如,第一个已经符合条件,那么剩余的执行就没有意义了。属于逻辑错误。
使用if else ,如果用户输入的是7以外的数据,那么怎么处理?就需要使用else 了
方案2:使用if else if语句
public static void main(String[] args) { int x = 8; if (x == 1) { System.out.println("星期一"); } else if (x == 2) { System.out.println("星期二"); } else if (x == 3) { System.out.println("星期三"); } else if (x == 4) { System.out.println("星期四"); } else if (x == 5) { System.out.println("星期五"); } else if (x == 6) { System.out.println("星期六"); } else if (x == 7) { System.out.println("星期日"); } else { System.out.println("请输入数字1-7"); } } |
注意:
public static void main(String[] args) { int x = 5; if (x == 1) { System.out.println("1"); } if (x == 2) { System.out.println("2"); } if (x == 3) { System.out.println("3"); } else { System.out.println("4"); // 4 } } |
该if 语句不是一个整体,第一个if 是一个语句,第二个又是一个语句,最后的if else 又是一个语句。
if语句特点
1. 第二种格式与三元运算符的区别:三元运算符运算完要有值出现。好处是:可以写在其他表达式中。
2. 条件表达式无论写成什么样子,只看最终的结构是否是true 或者 false。
练习1: 根据用户输入的月份,打印出月份所属的季节.
练习2: 根据用户输入的成绩,进行评级,根据学生考试成绩划分ABCD
练习1:
public static void main(String[] args) { int x = 1; if (x == 3) { System.out.println("spring"); } else if (x == 4) { System.out.println("spring"); } } |
仔细观察:发现if和else if要执行的语句是一样的,可不可以合并呢。当然是可以的。怎么合并?使用逻辑运算符,那么使用哪个逻辑运算符呢,&肯定不行。需要全部为真才为真,月份是不可能同时满足的那么使用|连接符号即可。意思只要其中一个为真,就为真。另外可以使用短路功能。
public static void main(String[] args) { int x = 1; if (x == 3 || x == 4 || x == 5) { System.out.println("spring"); } else if (x == 6 || x == 7 || x == 8) { System.out.println("Summer");
} else if (x == 9 || x == 10 || x == 11) { System.out.println("autumn"); } else { System.out.println("Winter"); } else { System.out.println("月份不存在"); } } |
If语句常见的错误:
1.忘记必要的括号:如果代码块中只有一条语句的时候,可以省略花括号,但是当花括号将多条语句扩在一起时,花括号就不能在省略。
double radius = 4; doublearea; if (radius >= 0) area System.out.println("The area " + " is " + area); |
double radius = 4; double area; if (radius >= 0) { area = radius * radius * 3.14; System.out.println("The area " + " is " + area); } |
虽然代码一样多,但是第一个会编译报错(area没有出初始化),第二个正常运行。就是因为少了花括号。所以一定要仔细。
2.if语句后出现分号
double radius = 0; double area; if (radius > 0); { area = radius * radius * 3.14; System.out.println("The area " + " is " + area); } |
注意:这是一个逻辑错误,编译和运行都不会报错,只是不会出现想要的结果。
相当于判断符合条件后,执行一个空语句。
double radius = 0; double area; if (radius > 0){}{ area = radius * radius * 3.14; System.out.println("The area " + " is " + area); } |