JavaSE学习记录(二)——流程控制

一、接收用户输入

在开发过程中,有时候我们需要用户自己输入参数,不能再是我们自己定义。那这就引入了Java里面的工具包——java.util.Scanner包。这个包里面有一个封装好的 Scanner 方法。那么底层原理先暂时不去深究,我们如何用这个方法来接收用户的输入参数呢?

  • 示例代码:
import java.util.Scanner;
/*
    案例:键盘录入数据
    需求:
    1、提示用户录入他/她的年龄
    2、通过键盘录入功能,接受用户录入的年龄
    3、将用户录入的年龄打印到控制台上

    步骤:
    1、导包
    2、创建对象
    3、调用方法
 */
public class ScannerDemo01 {
    public static void main(String[] args) {
        //1、提示用户录入他/她的年龄
        System.out.println("请录入您的年龄:");
        //2、通过键盘录入功能,接受用户录入的年龄
        //2.1、创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        //2.2、接受用户录入的年龄
        int age = sc.nextInt();
        //3、将用户录入的年龄打印到控制台上
        System.out.println("您的年龄是:" + age);
    }
}

上面的代码中,我们首先引入了Scanner这个包,然后创建了一个新的对象"sc",通过sc.nextINT()接受用户输入的数值型参数。Scanner可以接收用户输入的多种类型参数,比如(但不限于)以下几种:
在这里插入图片描述

  • 值得注意的是,nextLine()与其他的类型的一起使用,可能会出现错误。比如:next()在nextLine()之前使用时,由于Scanner是一个扫描器,我们录取到键盘的数据,先存到缓存区等待读取,它判断读取结束的标示是 空白符;比如空格,回车,tab 等等。
    • 当我们想要输入空格作为分隔符时,next()方法读取到空白符就结束;
    • 那后面nextLine()读取到回车也就结束了,这样就会导致输入的参数不正确。

二、执行结构概述

执行结构分为三个大类:

  1. 顺序结构
    顺序结构是一种基本的控制结构,他按照语句出现的顺序执行操作
  2. 分支结构
    分支结构又被成为选择结构,根据条件成立与否来执行操作
  3. 循环结构
    循环结构是一种重复结构如果条件成立,它会重复执行某一循环体,知道初心不满足的条件为止

三、分支结构

1. if条件语句
if 条件结构是根据条件判断之后再做处理,有四种类型:
- if(条件语句){…}
- if (条件语句){…}else{…}
- if (条件语句){…}else if(条件语句){…}
- if (条件语句){…}else if(条件语句){…}else{…}

  • if(){}语句示例代码:
public static void main(String[] args) {
            int a = 10;
            if(a < 50){
                System.out.println("a比50小");
            }
		}
  • if(){}else{}语句示例代码:
public static void main(String[] args) {
            int a = 10;
            if(a < 50){
                System.out.println("a比50小");
            }else {
                System.out.println("a比50大");
            }
        }
  • if(){}else if(){}语句示例代码:
public static void main(String[] args) {
            int a = 10;
            if(a < 50){
                System.out.println("a比50小");
            }else if (a>50){
                System.out.println("a比50大");
            }
        }
  • if(){}else if(){}else{}语句示例代码:
public static void main(String[] args) {
            int a = 10;
            if(a < 50){
                System.out.println("a比50小");
            }else if (a>50){
                System.out.println("a比50大");
            }else {
                System.out.println("a等于50");
            }
        }

2. switch语句

switch(表达式){
	case 取值 1: 语句块 1;
		break;
	case 取值 n: 语句块 n;
		break;
	default: 语句块 n+1;
		break;
	}

switch 语句有关规则

  • 表达式的返回值必须是下述几种类型之一:int, byte, char, short,String;
  • case 子句中的取值必须是常量,且所有 case 子句中的取值应是不同的;
  • default 子句是可选的;
  • break 语句用来在执行完一个 case 分支后使程序跳出 switch 语句块;
  • 如果 case 后面没有写 break 则直接往下面执行!
  • Case 后面的执行体可写{ }也可以不写{ }

示例代码:

 public static void main(String[] args) {
		//1、创建sc对象
        Scanner sc = new Scanner(System.in);
        //2、提示用户键盘录入月份并接收
        System.out.println("请输入一个月份:");
        int mouth = sc.nextInt();

        //方式1:switch实现
        switch (mouth) {
            case 12:
            case 1:
            case 2:
                System.out.println(mouth + "月是冬季");
                break;
            case 3:
            case 4:
            case 5:
                System.out.println(mouth + "月是春季");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println(mouth + "月是夏季");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println(mouth + "月是秋季");
                break;
            default:
                System.out.println("您输入的月份信息有错,已自动退出!");
                break;
        }
    }

四、循环结构

  • 循环语句功能:
    在循环条件满足的情况下,反复执行特定代码
  • 循环语句分类
    for 循环
    while 循环
    do/while 循环

1. while循环
符合条件,循环继续执行;否则,循环退出
特点:先判断,再执行
语法规则:

while(条件表达式){
 //要执行的语句块;
}

案例:
已知珠穆朗玛峰的高度约为8844.43米,约为8844430毫米
问:
现有一张足够大的纸,厚度为0.1毫米,需要折叠多少次,才能达到珠穆朗玛峰的高度?

  • 代码实现
public static void main(String[] args) {
        double paper = 0.1;
        int sum = 0;
        while (paper < 8844430){
            paper *= 2;
            sum++;
        }
        System.out.println("总共需要折叠" + sum + "次");
    }

2. do while循环

先执行一遍循环操作,符合条件,循环继续执行;否则,循环退出
特点:先执行,再判断
语法规则:

do {
 //循环操作
}while(条件表达式);

while 循环和 do-while 循环的区别?

  • while:先判断条件,如果条件满足,再执行循环操作
  • do while:先执行一遍循环操作,然后再判读条件,如果条件满足,继续执行循环操作。

3. for循环
语法规则:

for(初始化参数;判断条件 ;更新循环变量){
 //循环体;
}

案例:输出所有的水仙花数
提示:
水仙花数是一个三位数
它的各个位置的立方和等于本身,例如:153 = 111 + 555 + 333

  • 代码实现
public static void main(String[] args) {
        for (int num = 100; num <= 999; num++){
            int g, s, b;
            g = num % 10;
            s = num / 10 % 10;
            b = num /100;
            int m = 3;
            int result = (int)(Math.pow(g,m)+Math.pow(s,m)+Math.pow(b,m));
            if (result == num){
                System.out.println(num + "是水仙花数");
            }
        }
    }

4. for循环嵌套
案例:利用for循环嵌套打印三角形、菱形

public static void main(String[] args) {
        for (int m = 0; m <= 3; m++){
            for (int n = 1; n <= 2*m +1; n++){
                System.out.print("*");
            }
            System.out.println();
        }
        System.out.println("以上打印的是1、3、5、7个星星数");
        System.out.println("-------------------------");
        System.out.println("以下打印的是正三角形");
        for (int i = 1; i < 5; i++){
            //1、控制空格数
            for (int a = 1; a < 5-i; a++){
                System.out.print(" ");
            }
            //2、控制星星的数量
            for (int b = 1; b <= 2*i-1; b++){
                System.out.print("*");
            }
            System.out.println();
        }
        System.out.println("-------------------------");
        System.out.println("以下打印的是实心菱形");
        for (int p = 1; p < 5; p++){
            //1、控制空格数
            for (int a = 1; a < 5-p; a++){
                System.out.print(" ");
            }
            //2、控制星星的数量
            for (int b = 1; b <= 2*p-1; b++){
                System.out.print("*");
            }
            System.out.println();
        }
        for (int q = 1; q < 4; q++){
            //1、控制空格数
            for (int m = 1; m <= q; m++){
                System.out.print(" ");
            }
            //2、控制星星的数量
            for (int n = 5; n >= 2*q-1; n--){
                System.out.print("*");
            }
            System.out.println();
        }
        System.out.println("-------------------------");
        System.out.println("以下打印的是空心菱形");
        for (int p = 1; p < 5; p++){
            //1、控制空格数
            for (int a = 1; a < 5-p; a++){
                System.out.print(" ");
            }
            //2、控制星星的数量
            for (int b = 1; b <= 2*p-1; b++){
                //控制星星中的空格
                if (b == 1 || b == 2*p-1){
                    System.out.print("*");
                }else {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
        for (int q = 1; q < 4; q++){
            //1、控制空格数
            for (int m = 1; m <= q; m++){
                System.out.print(" ");
            }
            //2、控制星星的数量
            for (int n = 5; n >= 2*q-1; n--){
                //控制星星中的空格
                if (n == 5 || n == 2*q-1){
                    System.out.print("*");
                }else {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }

5. break和continue
语法规则:
break:跳出循环、结束循环
continue:跳出本次循环,进入下一次循环

  • break案例:打印10次Hello World,在第5次时,结束循环
public static void main(String[] args) {
        //打印10次Hello World,在第5次时,结束循环
        for (int i = 1; i < 10; i++) {
            if (i ==5)
                break;
            System.out.println("Hello World!  " + i);
        }
    }
  • continue案例:打印1–10之间的Hello World,且只打印3的倍数次
public static void main(String[] args) {
        //打印1--10之间的Hello World,且只打印3的倍数次
        for (int i = 1; i <= 10; i++) {
            if (i % 3 != 0)
                continue;
            System.out.println("Hello World!  " + i);
        }
    }

6. 如何跳出多重循环
步骤:
a.首先给循环起别名:eg:

demo:for(i = 1; i <= 10; i++){
				for ( ...; ...; ... ){
				}
			}

b.用if判断条件,满足条件跳出循环"demo",eg:

demo:for(i = 1; i <= 10; i++){
				for (j = 1; j< = i; j++){
					System.out.println("我是大哥!")
					if(i == 5){
						break demo;
					}
				}
			}

补充:如何判断用户输入的类型

判断用户输入的类型是否为我们想要的类型,只需要在用户输入时判断,如果是所需类型,则进入对应条件,否则,返回给用户错误信息(该方法不会导致程序出错)
例如,判断用户是否输入类型为int型可以这样写:

 public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一串数字用于检验:");
        if (input.hasNextInt()){
            System.out.println("是数字");
        }else {
            System.out.println("不是数字");
        }
    }

除此之外,其他很多类型也都能进行判断~

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值