流程控制
顺序结构
分支结构
循环结构
分支结构
if语句
if (表达式成立) {
执行代码A
}else{
执行代码B
}
注:其中else部分可以省略;当if或else语句中只有一句时可以省略大括号
public class D1 {
public static void main(String[] args) {
int a = 10, b = -5;
if (a >= b) {
System.out.println("a大于等于b"); // 会被执行
} else {
System.out.println("a小于b"); // 不会被执行
}
if (a % 2 == 0) {
System.out.println("a是偶数"); // 会被执行
} // 此处省略else语句
if ((a > 0 && b > 0) || (a < 0 && b < 0)) {
System.out.println("a和b相乘的结果是正数"); // 不会被执行
}
}
}
三元表达式
(关系或者逻辑表达式)? 成立时返回值 : 不成立时返回值
public class D2 {
public static void main(String[] args) {
/* int a = 5, b = 10, max;
if (a > b) {
max = a;
} else {
max = b;
}*/
// 三元表达式简化了if,但是不利于理解
int a=5,b=10 ,max ;
max = (a > b) ? a : b ;
}
}
if语句可以通过else if语句实现多路分支结构
public class D3 {
public static void main(String[] args) {
int a = 10;
if (a > 0) {
System.out.println("a是正数");
} else if (a == 0) {
System.out.println("a是0");
} else {
System.out.println("a是负数");
}
}
}
嵌套if结构
/*
* 判断一个输入的年份是闰年还是平年?
* */
import java.util.Scanner;
public class D4 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个年份:");
int year = input.nextInt();
if(year%4==0){
if(year%100!=0 || year % 400==0){
System.out.println(year+"年是闰年");
}
}else{
System.out.println(year+"年是平年");
}
}
}
switch语句
switch(表达式){
case 值A:
代码段A
break ;
case 值B:
代码段B
break ;
.....
default:
代码段C
}
注:
switch语句将表达式的值与各个case子语句的值进行判断,如果相等则执行case子语句中的代码段,直到遇到break语句;如果在代码段中不写break子句,则会继续执行后续case子句中的内容。如果没有一个case子句的值与表达式的值相等,会执行的default子句中的代码块
判断控制输入
import java.util.Scanner;
/*
* 用户输入一个整数,打印输出这个整数
* 如果输入的不是整数,让用户重新输入
* */
public class D6 {
public static void main(String[] args) {
// 创建Scanner对象
Scanner input = new Scanner(System.in);
int num = 0; // 定义接收用户输入的变量
boolean flag = true; // 控制循环的变量
System.out.println("请输入一个整数:");
do {// 判断输入的数
if (input.hasNextInt()) {
//接收数
num = input.nextInt();
//输入合法:改变循环的条件,跳出循环
flag = false;
} else {// 输入不合法
input.nextLine() ; // 释放掉输入的内容,将扫描仪推进到当前
System.out.println("请重新输入一个整数:");
}
} while (flag);
// 打印输出
System.out.println(num);
}
}
注:断点调试