目标

程序按结构可以分三种类型:

  • 顺序结构
  • 分支结构
  • [x] 循环结构

    1. 分支结构

    1.1 if 语句

    if 语句.png

    1. if (条件语句){
    2. 执行语句;
    3. ……
    4. }

    条件语句是一个boolean表达式,返回值为boolean类型 eg: a >100
    代码示例

    1. public class IfDemo01 {
    2. public static void main(String[] args) {
    3. int x = 5;
    4. if (x < 10) {
    5. x++;
    6. }
    7. System.out.println("x=" + x);
    8. }
    9. }

    1.2 if else 语句

    if else 语句.png
    语法结构

    1. if (判断条件) {
    2. 执行语句1
    3. ……
    4. } else {
    5. 执行语句2
    6. ……
    7. }

    代码示例

    1. /**
    2. 判断数字是奇数还是偶数
    3. */
    4. public class IfElseDemo {
    5. public static void main(String[] args) {
    6. int num = 19;
    7. if (num % 2 == 0) {
    8. // 判断条件成立,num被2整除
    9. System.out.println("num是一个偶数");
    10. } else {
    11. System.out.println("num是一个奇数");
    12. }
    13. }
    14. }

    1.3 if else if 语句

    if else if 语句.png
    语法结构

    1. if (判断条件1) {
    2. 执行语句1
    3. }
    4. else if (判断条件2) {
    5. 执行语句2
    6. }
    7. // 此处还可以有多个 else if 语句
    8. else if (判断条件n) {
    9. 执行语句n
    10. }
    11. // 也可以没有 else 语句
    12. else {
    13. 执行语句n+1
    14. }

    代码示例

    1. public class IfElesIfDemo {
    2. public static void main(String[] args) {
    3. int score = 75; // 定义学生成绩
    4. // 满足条件 score > 80
    5. if (score > 80) {
    6. System.out.println("该成绩的等级为优");
    7. }
    8. // 不满足条件 score > 80 ,但满足条件 score > 70
    9. // score<=80 并且 score >70
    10. else if (score > 70) {
    11. System.out.println("该成绩的等级为良");
    12. }
    13. // 不满足条件 score > 70 ,但满足条件 score > 60
    14. // score<=70 并且 score>60
    15. else if (score > 60) {
    16. System.out.println("该成绩的等级为中");
    17. }
    18. // 不满足条件 score > 60
    19. // score <=60
    20. else {
    21. System.out.println("该成绩的等级为差");
    22. }
    23. }
    24. }

    1.4 switch 语句

    switch 语句.png
    语法结构

    1. switch (某种数据类型的数据){
    2. case 目标值1:
    3. 执行语句1
    4. break; // break表示跳出switch语句
    5. case 目标值2:
    6. 执行语句2
    7. break;
    8. ......
    9. case 目标值n:
    10. 执行语句n
    11. break;
    12. default: // 之前的case都不满足执行defalut
    13. 执行语句n+1
    14. break;
    15. }

    注意:

  • 使用break关键字可以跳出switch语句

  • switch语句中的表达式只能是byteshortintcharString枚举
  • 在JDK5.0中引入的新特性枚举可以作为switch语句表达式的值
  • 在JDK7.0中引入了新特性String可以作为switch语句表达式的值

代码示例:

  1. public class SwitchDemo01 {
  2. public static void main(String[] args) {
  3. int week = 5;
  4. switch (week) {
  5. case 1:
  6. System.out.println("星期一");
  7. break;
  8. case 2:
  9. System.out.println("星期二");
  10. break;
  11. case 3:
  12. System.out.println("星期三");
  13. break;
  14. case 4:
  15. System.out.println("星期四");
  16. break;
  17. case 5:
  18. System.out.println("星期五");
  19. break;
  20. case 6:
  21. System.out.println("星期六");
  22. break;
  23. case 7:
  24. System.out.println("星期天");
  25. break;
  26. default:
  27. System.out.println("输入的数字不正确...");
  28. break;
  29. }
  30. }
  31. }

switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。

  1. public class SwitchDemo02 {
  2. public static void main(String[] args) {
  3. int week = 2;
  4. switch (week) {
  5. case 1:
  6. case 2:
  7. case 3:
  8. case 4:
  9. case 5:
  10. // 当 week 满足值 1、2、3、4、5 中任意一个时,处理方式相同
  11. System.out.println("今天是工作日");
  12. break;
  13. case 6:
  14. case 7:
  15. // 当 week 满足值 6、7 中任意一个时,处理方式相同
  16. System.out.println("今天是休息日");
  17. break;
  18. }
  19. }
  20. }

2. 循环结构

2.1 while循环

while 循环.png
语法结构

  1. while(循环条件){
  2. 执行语句;
  3. }

代码示例

  1. public class WhileDemo {
  2. public static void main(String[] args) {
  3. int x = 1; // 定义变量x,初始值为1
  4. while (x <= 4) { // 循环条件
  5. System.out.println("x = " + x); // 条件成立,打印x的值
  6. x++; // x进行自增
  7. }
  8. }
  9. }

2.2 do while 循环

do while 循环.png
语法结构

  1. do {
  2. 执行语句;
  3. } while(循环条件);

代码示例

  1. public class DoWhileDemo {
  2. public static void main(String[] args) {
  3. int x = 1; // 定义变量x,初始值为1
  4. do {
  5. System.out.println("x = " + x); // 打印x的值
  6. x++; // 将x的值自增
  7. } while (x <= 4); // 循环条件
  8. }
  9. }

while 和 do while 的区别:
while循环先判断是否满足循环条件,满足执行while后面{}中的代码,不满足,跳出循环。
do while是先执行一次do{}号中的代码,然后判断循环条件,满足条件执行do{}中的代码,不满足跳出循环。

2.3 for 循环

for 循环.png
语法结构

  1. for(初始化表达式; 循环条件; 操作表达式){
  2. 执行语句;
  3. }

语法说明

for( 1  ; 2 ; 3){
    4
}

第一步,执行 1
第二步,执行 2,如果判断结果为true,执行第三步,如果判断结果为false,执行第五步
第三步,执行 4
第四步,执行 3,然后重复执行第二步
第五步,退出循环

代码示例

public class ForDemo01 {
    public static void main(String[] args) {
        int sum = 0; // 定义变量sum,用于记住累加的和
        for (int i = 1; i <= 4; i++) { // i的值会在1~4之间变化
            sum += i; // 实现sum与i的累加
        }
        System.out.println("sum = " + sum); // 打印累加的和
    }
}

2.4 无限循环

while(true){

} 
// 或
for(;;){

}

无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制是否终止循环

2.5 跳转语句

break 语句

跳出当前循环

public class BreakDemo {
    public static void main(String[] args) {
        int x = 0; // 定义变量x,初始值为1
        while (x <= 4) { // 循环条件
            x++; // x进行自增
            if (x == 3) {
                break;
            }
            System.out.println("x = " + x); // 打印x的值
        }
    }
}

continue 语句

继续执行下次循环

public class BreakDemo {
    public static void main(String[] args) {
        int x = 0; // 定义变量x,初始值为1
        while (x <= 4) { // 循环条件
            x++; // x进行自增
            if (x == 3) {
                continue;
            }
            System.out.println("x = " + x); // 打印x的值
        }
    }
}

2.6 循环嵌套

语法格式

for(初始化表达式; 循环条件; 操作表达式) {
    执行语句;
    for(初始化表达式; 循环条件; 操作表达式) {
        执行语句;
    }
    执行语句;
}

代码示例

打印三角形

public class ForForDemo {
     public static void main(String[] args) {
         int i, j; // 定义两个循环变量
         for (i = 1; i <= 9; i++) { // 外层循环打印行

             for (j = 1; j <= i; j++) { // 内层循环打印列
                 System.out.print("* "); // 打印*
             }

             System.out.print("\n"); // 换行
         }
     }
 }

3. 键盘输入

目标

  • 熟悉 Java 帮助文档(API)的使用
  • 熟悉使用键盘数据 API

回顾:数据类型分类

  • 基本数据类型(4类8种)
    • 整数
      • short
      • byte
      • int
      • long
    • 浮点数
      • float
      • double
    • 字符类型
      • char
    • 布尔类型
      • boolean
  • 引用数据类型

      • String 类
      • Scanner 类
      • Random 类
    • 数组
    • ……

      3.1 引用数据类型

      定义引用数据类型变量:
      数据类型  变量名 =  new 数据类型();
      
      每种引用数据类型都有其功能,我们可以调用该类型实例的功能。
      变量名.方法名();
      

      3.2 Scanner

      Scanner 类是引用数据类型的一种,该类来获取到键盘录入的数据。

      使用步骤

  • 导入包

    import java.util.Scanner;
    
  • 创建对象实例

    Scanner sc = new Scanner(System.in);
    
  • 调用方法

    String s = sc.next(); // 用来接收键盘录入的字符串
    String s = sc.nextLine(); // 用来接收键盘录入的一行数据
    int i = sc.nextInt(); // 用来接收键盘录入的整数
    
  • ScannerDemo01.java ```java import java.util.Scanner; // 导入包

public class ScannerDemo01 { public static void main(String[] args) { //创建Scanner引用类型的变量 Scanner sc = new Scanner(System.in); //接收键盘输入的数字 System.out.println(“请输入一个数字:”); int n = sc.nextInt(); System.out.println(“n的值为:” + n); //接收键盘输入的字符串 System.out.println(“请输入一个字符串:”); String str = sc.next(); System.out.println(“str的值为:” + str); } } ```

常用方法

No. 方法 类型 描述
1 public Scanner(InputStream source) 构造 接收 InputStream 输入流对象,此为输入源
2 public String next() 普通 取出输入数据,以 String 形式返回
3 public String nextLine() 普通 取出输入数据,以 String 形式返回
3 public 数据类型 nextXxx() 普通 取出指定数据类型的数据

**next()****nextLine()**区别:
**next**:不能得到带有空格的字符串。
**nextLine**:以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符;