首页 > 技术文章 > 【Java基础篇】流程控制

goodluckya 2020-03-26 22:20 原文

Java流程控制

01-用户交互Scanner


Scanner对象

  • java.util.Scanner,可以通过Scanner类来获取用户的输入
  • 基本语法Scanner s = new Scanner(System.in);
  • 通过Scanner类的next()nextLine()方法获取输入的字符串,在读取前一般需要使用haasNext()hasNextLine()判断是否还有输入的数据
import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        //创建一个扫描器对象,用于接收键盘数据
        //通过System.in接收用户的输入,并且把它封装成scanner对象
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用next方式接收");
        //判断用户有没有输入字符串
        if(scanner.hasNext()){
            //使用next方式接收
            String str = scanner.next(); //程序会等待用户输入完毕
            System.out.println("输入的内容为:"+str);
        }
        //属于IO流的类使用完成后要关掉,否则会占用资源
        scanner.close();
    }
}
  • next()方法
    • 一定要读取到有效字符后才可以结束输入
    • 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
    • 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
    • next()不能得到带有空格的字符串
  • nextline()方法
    • 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
      • 可以获得空白

02. 顺序结构


  • 定义

    顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行

  • 举例:

/*
 * 顺序结构:从上往下,依次执行
 */
public class OrderDemo {
	public static void main(String[] args) {
		System.out.println("开始");
		System.out.println("1");
		System.out.println("2");
		System.out.println("3");
		System.out.println("结束");
	}
}

03. 选择结构


  • if选择结构
if(条件){
  代码块 //条件成立之后要执行的代码,可以是一条语句,也可以是一组语句      
}
  • if-else选择结构
if(条件){
  //代码块1  
}else{
  //代码块2  
}
  • 多重if选择结构
if(条件1){
  //代码块1
}else if(条件2){
  //代码块2
}else{
  //代码块3
}
  • 嵌套if选择结构
if(条件1){
  if(条件2){
    //代码块1
  }else{
    //代码块2
  }
}else{
  //代码块3
}

04. switch选择结构


switch(表达式){
  case 常量1:
      //代码块1;
      break;
  case 常量2:
      //代码块2;
      break;
  ... ...
  default:
      //代码块n;
      break;
}
  • 注意:

    • 为了防止case穿透问题,一般在使用switch语句时都必须加上break(跳出),否则case下余的代码也会被编译执行,就毫无意义)
    • 在JDK7之后的版本,switch语句还支持String类型,也就是说case后面的值不仅可以为数字,也可以为字符/字符串等。但是如果使用float与double会出现丢失精度的问题)
  • case穿透的理解:

  当条件表达式计算完成后,程序开始执行,如果结果为1,则执行case1的代码块1。当代码块1执行完毕后,程序还会继续执行case2的代码块2,直至执行完所有case。

05. 循环结构


循环的组成(四个部分)

  1. 初始部分:用以判断的变量
  2. 循环条件:决定是否循环的依据
  3. 循环操作:单次执行的逻辑代码或任务
  4. 迭代部分:控制循环条件改变的增量

while循环

while(布尔表达式) {
	//循环内容
}

只要布尔表达式为 true,循环就会一直执行下去

执行流程:

  • 先对布尔表达式进行判断,结果为true,则执行逻辑代码
  • 本次执行完毕后,再次进行判断,结果仍旧为true,则再次执行逻辑代码
  • 直至布尔表达式的结果为false时,才会退出循环结构,执行后续代码

do while循环

do {
		逻辑代码(循环操作)
	} while(布尔表达式);

执行流程:

  • 先执行一次循环操作之后,在进行布尔表达式判断
  • 如果结果为true,则再次执行循环操作
  • 如果结果为false,才会退出循环结果,执行后续代码

for循环

for(初始部分;循环部分;迭代部分) {
		//循环操作
	}

执行流程:

  • 首次执行初始部分(仅一次)
  • 对布尔表达式进行判断,结果为true,则执行逻辑代码
  • 本次执行完毕后,执行迭代部分,再次判断,结果仍旧为true,则再次执行逻辑代码
  • 直至布尔表达式的结果为false时,才会退出循环结果,执行后续逻辑代码

break、continue

  • break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。
  • continue语句用在循环语句体重,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。

练习

  • 九九乘法表
public static void main(String[] args) {
        for(int i=1; i<=9; i++){
            for (int j=1; j<=i; j++){
                System.out.print(j+"*"+i+"="+i*j+"\t");
            }
            System.out.println();
        }
    }
  • 打印三角形
public static void main(String[] args) {
        //打印三角形 5行

        for (int i = 1; i < 5 ; i++) {
            for(int j=5; j>i; j--) {
                System.out.print(" ");
            }
            for(int j=1; j<= i; j++) {
                System.out.print("*");
            }
            for(int j=1; j<i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

推荐阅读