阿里云【名师课堂】Java零基础入门20 ~ 23:程序逻辑控制
@
基本控制结构
基本控制结构有三种:顺序结构、分支结构(选择结构)、循环结构。
顺序结构:所有代码按照定义的先后顺序一行行执行。
分支结构:进行逻辑判断,当满足某些条件时才会执行某些语句。
循环结构:在一定条件下反复执行某段程序。
20、分支结构
分支结构有两类:if
、switch
。
if
if
分支结构的基础语法:
if (条件表达式1){
语句组1 ;
} else if (条件表达式2) {
语句组2 ;
} ······
else {
语句组n ; // 上述条件都不满足时执行
}
- 范例:观察if语句
public class TestDemo { // 定义一个程序类
public static void main(String args[]) {
int age = 20 ;
if (13 <= age && age <= 18){
System.out.println( "teenager" ) ;
} else if (age < 13) {
System.out.println( "child" ) ;
} else {
System.out.println( "adult" ) ;
}
// 输出adult
}
}
switch
switch支持int、enum、char、String
switch
分支结构的基础语法:
switch(数字 | 枚举 | 字符 | 字符串){
case 内容1 : {
内容满足时执行的语句 ;
[break ;]
}
case 内容2: {
内容满足时执行的语句 ;
[break ;]
}
······
case 内容n : {
内容满足时执行的语句 ;
[break ;]
}
[default : {
都不满足时执行的语句 ;
[break ;]
}]
[ ]
内为可选操作。但是如果不加break
会从满足条件的case语句开始,一直执行直到遇见break
或全部执行完毕。
- 范例:观察switch语句
public class TestDemo { // 定义一个程序类
public static void main(String args[]) {
int ch = 1 ;
switch(ch) {
case 1 : {
System.out.println("ch是1");
break ;
}
case 2 : {
System.out.println("ch是2");
break ;
}
default : {
System.out.println("都不满足") ;
break ;
}
}
}
}
- 如果不加
break
输出会是这个结果(ch = 1时)
- 加了
break
之后(ch = 1时)
- 范例:观察switch语句(使用string)
public class TestDemo { // 定义一个程序类
public static void main(String args[]) {
String info = "hello" ;
switch(info) {
case "hello" : {
System.out.println("你好");
break ;
}
case "bye" : {
System.out.println("再见");
break ;
}
default : {
System.out.println("都不满足") ;
break ;
}
}
}
}
21、循环结构
有两类:while循环、for循环,被反复执行的一段程序称为“循环体”。
while循环
while
分支结构的基础语法:
while (条件表达式) {
循环体语句 ;
}
do-while
分支结构的基础语法:
do{
循环体语句 ;
} while (条件表达式) ;
while与do-while语句区别
- while语句判断条件为假时,不执行循环体,跳转到循环体外执行后续语句;条件为真时每执行完一次循环体都会重新计算一次条件表达式,判断是否继续执行;
- do-while语句限制性一次循环体中语句,然后再判断条件是否为真,真则继续循环,假则终止循环,因此,do-while循环至少执行一次循环语句。
范例:while循环实现1~100累加
public class TestDemo { // 定义一个程序类
public static void main(String args[]) {
int num = 1 ;
int result = 0 ;
while (num <= 100){
result += num;
num += 1 ;
}
System.out.println(result) ;
}
}
范例:do-while循环实现1~100累加
public class TestDemo { // 定义一个程序类
public static void main(String args[]) {
int num = 1 ;
int result = 0 ;
do {
result += num;
num += 1 ;
} while (num <= 100) ;
System.out.println(result) ;
}
}
二者结果都是5050。
- 范例:观察
while
与do-while
区别
把while循环和do-while循环里的num
赋值都改为3000,得到:
for循环
for
分支结构的基础语法:
for (循环初始化条件 ; 循环结束判断 ; 修改循环条件) {
循环体代码;
}
- 范例:for循环实现1~100累加
public class TestDemo { // 定义一个程序类
public static void main(String args[]) {
int result = 0 ;
// 1、循环初始化:num = 1
// 2、判断循环条件:num <= 100
// 4、循环条件变更:num++
// 5、再次判断循环条件
for (int num = 1 ; num <= 100 ; num++) {
result += num ; // 3、执行循环体语句
}
System.out.println(result) ;
}
}
循环使用技巧:
- 对于不知道循环次数,但是直到循环结束条件:使用while循环;
- 明确知道循环次数时使用for循环。
22、循环控制
两个关键字:continue、break
continue
执行到continue时跳出循环,返回for
循环的条件判断处进行处理,循环体后续语句不执行。
public class TestDemo { // 定义一个程序类
public static void main(String args[]) {
for (int num = 1 ; num <= 10 ; num++) {
if(num == 4) {
continue ;
}
System.out.println(num) ;
}
}
}
可以看到4被跳过,因为输出4
这个语句没有被执行,直接返回了循环开始处。
break
执行到break时强制退出for
循环,循环体后续语句不执行。
public class TestDemo { // 定义一个程序类
public static void main(String args[]) {
for (int num = 1 ; num <= 10 ; num++) {
if(num == 4) {
break ;
}
System.out.println(num) ;
}
}
}
因为输出4
以及之后的循环体语句没有被执行,直接退出循环。
带标号的break与continue语句(了解)
相当于别的语言中的goto语句。
public class TestDemo { // 定义一个程序类
public static void main(String args[]) {
// 使用带标号break、continue语句退出循环嵌套
outer: for(int i=0;i<3;i++) {
System.out.print("Pass "+i+": ");
for (int j=0;j<20;j++) {
if (j==10) {
// break outer;
// continue outer ;
}
System.out.print(j+" ");
}
System.out.println("This will not print");
} //end of "for"
System.out.println("\nLoops complete.");
}
}
23、循环嵌套
- 范例:打印九九乘法表
public class TestDemo { // 定义一个程序类
public static void main(String args[]) {
int result = 0 ;
for(int i = 1 ; i <= 9 ; i++) {
for (int j = i ; j <= 9 ; j++) { // 第一种格式
// for (int j = 1 ; j <= i ; j++) { // 第二种格式
result = i * j ;
System.out.print(i + "*" + j + "=" + result + "\t") ;
}
System.out.println(); // 内循环循环一遍后换行
}
System.out.println("\nComplete!");
}
}
- 范例:打印金字塔
public class TestDemo { // 定义一个程序类
public static void main(String args[]) {
int line = 7 ; // 定义行数
for(int i = 0 ; i < line ; i++) { // 控制行
for (int j = 0 ; j < line - i ; j++) { // 控制每行空格数
System.out.print(" ") ;
}
for (int k = 0 ; k <= i ; k++){ // 控制每行*数
System.out.print("* ") ;
}
System.out.println(); // 内循环循环一遍后换行
}
System.out.println("\nComplete!");
}
}
目前还是不适应博客园的界面,等学成了再回归吧,对我来说当下还是csdn比较方便快捷:https://blog.csdn.net/weixin_43624945