1.程序结构
1)分支结构:
- if…else if结构:多条路
- switch…case结构:多条路
优点:效率高、结构清晰
缺点:只能对整数判断相等
break:跳出switch
2)循环结构:
反复多次执行一段相同或相似的代码:
- for结构:应用率最高,与次数相关的循环
- while:先判断后执行,有可能一次都不执行
- do…while:先执行后判断,至少执行一次循环:
循环三要素:
1.循环变量的初始化
2.循环的条件(以循环变量为基础)
3.循环变量的改变(向着循环的结束变)
循环变量:在整个循环过程中所反复改变的那个数
嵌套循环:
- 循环中套循环,常常多行多列时使用,一般外层控制行,内层控制列
- 执行规则:外层循环走一次,内层循环走所有次
- 建议:嵌套层数越少越好,能用一层就不用两层,能用两层就不用三层
- break只能跳出当前层循环
三种循环结构如何选择:
-
先看循环是否与次数相关:
相关用for
无关,再看要素1与要素3的代码是否相同:若相同用do…while,若不同用while
循环中的关键字:
break:跳出循环-------------可以用在switch和循环中
continue:跳过循环体中剩余语句而进入下一次循环-----------只能用在循环中
2.练习
1)分支结构:
- 输入年月,判断当月有多少天?
这里用三目运算符:Boolean?表达式:表达式 代替if…else
代码如下:
import java.util.Scanner;
public class DateTime {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年份:");
int year = scanner.nextInt();
System.out.println("请输入月份:");
int month = scanner.nextInt();
System.out.println(month==2? (year%4==0? 29:28):(month<8? (month%2==0? 30:31):(month%2==0? 31:30)));
}
}
2)循环:
- 如图,根据输入的行数,打印字符*组成的等腰三角形。6行输出结果如下:
*
***
*****
*******
*********
***********
代码如下:
import java.util.Scanner;
public class Star {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入星星行数:");
int n = scanner.nextInt();
for(int i=0;i<n;i++){
for(int j=0;j<2*n-1;j++){
//if...else结构
// if(j>n-i-2&&j<n+i){
// System.out.print("*");
// }
// else{
// System.out.print(" ");
// }
//三目运算符结构
System.out.print(j>n-i-2&&j<n+i?"*":" ");
}
System.out.println();
}
}
}