JavaSE语法(3)——【逻辑控制:各种分支循环语句】

目录

前言

✏️输入输出

1.输出到控制台

2.从键盘输入

✏️顺序结构

✏️分支结构

1.if语句

2.switch 语句

✏️循环结构

1.while 循环

2.break与continue

3.for 循环

4.do while 循环

✏️猜数字游戏



 

前言

         我的JavaSE语法专栏地址,可以看看,你可能会有不一样的收获哦。

JavaSE_会飞的阿喵的博客-CSDN博客icon-default.png?t=M85Bhttps://blog.csdn.net/che__dan/category_11970438.html?spm=1001.2014.3001.5482



✏️输入输出

1.输出到控制台

格式:

String str = "abcdefg";

System.out.println(str); // 输出一个字符串, 带换行
System.out.print(str); // 输出一个字符串, 不带换行
System.out.printf("%s",str); // 格式化输出
  • println 输出的内容自带 \n(换行), print 不带 \n
  • printf 的格式化输出方式和 C 语言的 printf 是基本一致的

2.从键盘输入

(1)使用 Scanner 读取字符串/整数/浮点数

import java.util.Scanner; // 需要导入 util 包

Scanner sc = new Scanner(System.in);

System.out.println("请输入你的姓名:");
String name = sc.nextLine();

System.out.println("请输入你的年龄:");
int age = sc.nextInt();

System.out.println("请输入你的工资:");
float salary = sc.nextFloat();

System.out.println("你的信息如下:");
System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);

sc.close(); // 注意, 要记得调用关闭方法,也可以不用,程序结束后会自动关闭。


// 执行结果
请输入你的姓名:
张三
请输入你的年龄:
18
请输入你的工资:
1000
你的信息如下:
姓名: 张三
年龄:18
工资:1000.0

 (2)使用 Scanner 循环读取 N 个数字,并求取其平均值

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int sum = 0;
        int num = 0;
        
        //hasNextInt()是来判断你输入的是不是相应的类型,如果你输入字符串就用hasNextLine()、
        //输入小数就用hasNextDouble()……
        while (sc.hasNextInt()) {
            int tmp = sc.nextInt();
            sum += tmp;
            num++;
        }
        System.out.println("sum = " + sum);
        System.out.println("avg = " + sum / num);
        sc.close();
    }

注意: 当循环输入多个数据的时候, 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl+ d),在 编译环境为IntelliJ IDEA上用  ctrl+ d。



✏️顺序结构

        顾名思义,就是让代码一行一行执行,非常简单。

System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);
System.out.println(6);

//结果:
1
2 
3 
4 
5 
6


✏️分支结构

1.if语句

  • 格式1:
if(布尔表达式){
// 语句
}

如果布尔表达式结果为true,执行if中的语句,否则不执行。

注意:这里区别于C语言的 if等判断语句,在Java里,括号里面不能是其它类型。比如:“if(1)” 在C语言里“ 1 ”代表真,if语句能过,但是在Java里会报错。

JavaSE语法(3)——【逻辑控制:各种分支循环语句】_第1张图片


  • 格式2:
if(
布尔表达式){
// 语句1
}else{
// 语句2
}

 如果布尔表达式结果为true,则执行if中语句否则执行else中语句。

例子1:

        int grade = 90;
        if (grade < 60) {
            System.out.println("给你一个大嘴巴子");
        } else {
            System.out.println("给你一个大棒棒糖");
        }

  • 格式3:
if(
布尔表达式1){
// 语句1
}else if(布尔表达式2){
// 语句2
}else{
// 语句3
}

 表达式1成立,执行语句1否则表达式2成立,执行语句2否则执行语句3。

例子2:判断正负数

int sum = 8;
if (sum > 0){
    System.out.println("sum是正数");
} else if(sum < 0) {
    System.out.println("sum是负数");
else{
    ystem.out.println("sum为0");
}

 例子3:判断润年

(1)能被4整除且不能被100整除(如2004年是闰年,而1900年不是)

(2)能被400整除(如2000年是闰年)

int year = 2000;
if (year % 100 == 0) {
    // 判定世纪闰年
    if (year % 400 == 0) {
        System.out.println("是闰年");
    } else {
        System.out.println("不是闰年");
    }
} else {
    // 普通闰年
    if (year % 4 == 0) {
        System.out.println("是闰年");
    } else {
        System.out.println("不是闰年");
    }
}

  • if语句的易错点:

(1)分号问题

int x = 20;
if (x == 10);{
    System.out.println("hehe");
} 


// 运行结果
hehe

        此处多写了一个 分号,导致分号成为了 if 语句的语句体, { } 中的代码已经成为了和一个 if 无关的代码块。

(2)悬垂 else 问题

int x = 10;
int y = 10;
if (x == 10)
    if (y == 5)
        System.out.println("aaa");
else
    System.out.println("bbb");

//运行结果:
bbb

        if、else 语句中可以不加 大括号也可以写语句(只能写一条语句)。此时 else 是和最接近的 if 匹配。但是实际中不建议这么写最好加上大括号

2.switch 语句

        switch语句是单条件、多分支的开关语句

格式:

switch(表达式){
    case 常量值1:{
        //语句1;
        break;
    }
    case 常量值2:{
        //语句2;
        break;
    }
    default:{
        //内容都不满足时执行语句;
        break;
    }
}

 执行流程:

  • 先计算表达式的值。
  • 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束。
  • 当表达式的值没有与所列项匹配时,执行default。
  • break可以省略,但是得要看具体情况,省略的情况下,case执行后不会停下并继续往下执行,具体看下面例子。

例:使用switch语句判断用户从键盘输入的正整数是否为中奖号码。

    public static void main(String[] args) {
        int number = 0;
        Scanner in = new Scanner(System.in);

        System.out.println("请输入正整数(回车确定):");
        number = in.nextInt();
        switch (number) {
            case 9:
            case 131:
            case 12:
                System.out.println(number + "是三等奖");
                break;
            case 209:
            case 596:
            case 27:
                System.out.println(number + "是二等奖");
            case 875:
            case 316:
            case 59:
                System.out.println(number + "是一等奖");
                break;
            default:
                System.out.println(number + "未中奖");
                break;
        }


    //输入:875
    //输出:是一等奖

注意:

  • 多个case后的常量值不可以重复。
  • switch的括号内只能是以下类型的表达式,否则会报错:

        基本类型:byte、char、short、int,注意不能是long类型
        引用类型:String常量串、枚举类型。



✏️循环结构

1.while 循环

格式:

while(循环条件){
    //循环语句;
}

        循环条件为 true,则执行循环语句;否则结束循环。

JavaSE语法(3)——【逻辑控制:各种分支循环语句】_第2张图片

例: 计算 5 的阶乘

    public static void main(String[] args) {
        int n = 1;
        int result = 1;
        while (n <= 5) {
            result *= n;
            n++;
        }
        System.out.println(result);
    }

 注意:

  • 和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }。
  • 和 if 类似, while 后面的  {  建议和 while 写在同一行。
  • 和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行。

2.break与continue

        break 的功能是让循环提前结束,continue 的功能是跳过这次循环, 立即进入下次循环。

break例:

    public static void main(String[] args) {
        int num = 100;
        while (num <= 200) {
            if (num % 3 == 0) {
                System.out.println("找到了 3 的倍数, 为:" + num);
                break;
            }
            num++;
        }
        // 执行结果找到了 3 的倍数, 为:102
    }

continue例:
 

    public static void main(String[] args) {
        int num = 100;
        while (num <= 200) {
            if (num % 3 != 0) {
                num++; // 这里的 ++ 不要忘记! 否则会死循环.
                continue;
            }
            System.out.println("找到了 3 的倍数, 为:" + num);
            num++;
        }
    }

 3.for 循环

格式:

for(表达式①;布尔表达式②;表达式③){
    表达式④;
}
  • 表达式1: 用于初始化循环变量初始值设置,在循环最开始时执行,且只执行一次。
  • 表达式2: 循环条件,满则循环继续,否则循环结束。
  • 表达式3: 循环变量更新方式。

JavaSE语法(3)——【逻辑控制:各种分支循环语句】_第3张图片

 例:计算 5 的阶乘

    public static void main(String[] args) {
        int result = 1;
        for (int i = 1; i <= 5; i++) {
            result *= i;
        } 
        System.out.println("result = " + result);
    }
    //结果:result = 120
  • 和 if 类似, for 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }。
  • 和 if 类似, for 后面的 { 建议和 while 写在同一行。
  • 和 if 类似, for 后面不要多写 分号, 否则可能导致循环不能正确执行。
  • 和while循环一样,结束单趟循环用continue,结束整个循环用break。。

 4.do while 循环

格式:

do{
    循环语句;
}while(循环条件);

先执行循环语句, 再判定循环条件,循环条件成立则继续执行,否则循环结束。

JavaSE语法(3)——【逻辑控制:各种分支循环语句】_第4张图片

例:打印 1 - 10

int num = 1;
do {
    System.out.println(num);
    num++;
} while (num <= 10);
//结果:
1
2
3
4
5
6
7
8
9
10
  • do while 循环最后的分号不要忘记。
  • 一般 do while 很少用到, 更推荐使用 for 和 while。 

✏️猜数字游戏

规则:系统自动生成一个随机整数(1-100), 然后由用户输入一个猜测的数字。如果输入的数字比该随机数小, 提示 "低了", 如果输入的数字比该随机数大, 提示 "高了" , 如果输入的数字和随机数相等, 则提示 "猜对了" 。

    public static void main(String[] args) {
        Random random = new Random(); // 默认随机种子是系统时间
        Scanner sc = new Scanner(System.in);
        int toGuess = random.nextInt(100);//范围是[0,100)
        while (true) {
            System.out.println("请输入要输入的数字: (1-100)");
            int num = sc.nextInt();
            if (num < toGuess) {
                System.out.println("低了");
            } else if (num > toGuess) {
                System.out.println("高了");
            } else {
                System.out.println("猜对了");
                break;
            }
        }
        sc.close();
    }

你可能感兴趣的:(JavaSE,java,开发语言,1024程序员节)