⭐️JavaSE系列⭐️Java程序的选择与轮回——分支结构与循环结构

Posted 未见花闻

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了⭐️JavaSE系列⭐️Java程序的选择与轮回——分支结构与循环结构相关的知识,希望对你有一定的参考价值。

⭐️前面的话⭐️

本篇文章带大家认识Java程序逻辑控制结构,再复杂的程序都是离不开逻辑控制。
本文章除了Java程序的输入,分支结构与循环结构与C语言差不多,只是Java中判断表达式的值必须是boolean类型。不过Java中没有goto,目前仅仅作为保留字。
参考博主历史博文(非常详细):C语言中的选择与轮回,选择结构与循环结构

📒博客主页:未见花闻的博客主页
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📌本文由未见花闻原创,CSDN首发!
📆首发时间:🌴2021年10月20日🌴
✉️坚持和努力一定能换来诗与远方!
💭参考书籍:📚《Java核心技术卷1》,📚《Java核心技术卷2》,📚《Java编程思想》
💬参考在线编程网站:🌐牛客网🌐力扣
🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!
博主的码云gitee,平常博主写的程序代码都在里面。

🍀 🌹 🌻 🌺 🍁



🍀1.Java程序的输入

在Java当中,我们是使用Scanner来进行数据的自定义输入。

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);//System.in 表示从键盘输入
        System.out.println("请输入一个字符串:");
        String str = sc.nextLine();//由于Java的输入做的很粗糙,有一些bug,比如如果先读数字在读字符串,字符串就读不了了,所以建议先读字符串再读数字
        System.out.println(str);
        System.out.println("请输入一个整数:");
        int a = sc.nextInt();//整型输入调用nextInt。如果是double 则调用nextDouble,一行字符串建议使用nextLine,以空格隔开的字符串建议next
        System.out.println(a);
        System.out.println("请输入一个小数:");
        double b = sc.nextDouble();
        System.out.println(b);
}
请输入一个字符串:
weijianhuawen
weijianhuawen
请输入一个整数:
2
2
请输入一个小数:
3.14
3.14

Process finished with exit code 0

如果需要做多组输入的oj题

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            //比如需要输入多行输入字符串
            String str = sc.nextLine();
            System.out.println(str);
        }
}


在编译器中运行,如需正常退出程序,需输入ctrl+D

🍀2.Java程序的分支结构

🌺2.1if…else

🌹分支结构首先想到的就是if语句了,第一种用法就是单独的if判断语句。

语法结构
if (布尔表达式)
{
	语句;
}
public static void main(String[] args) {
        int n = 99;
        if (n == 99) {
            System.out.println(99);
        }
}

🌹第二种用法就是单if…else分支结构。

语法结构
if (布尔表达式)
{
	语句1;
}
else
{
	语句2;
}
public static void main(String[] args) {
        int n = 99;
        if (n == 99) {
            System.out.println(99);
        }else {
            System.out.println(88);
        }
}

🌹第三种用法就是多if…else if…else…分支结构。

语法结构
if (布尔表达式1)
{
	语句1;
}
else if (布尔表达式2)
{
	语句2}
...
//else if数量无限制,最后的else可以用也可以不用
else
{
	语句n;
}
public static void main(String[] args) {
        int n = 99;
        if (n == 99) {
            System.out.println(99);
        }else if (n == 98) {
            System.out.println(98);
        }else if (n == 97) {
            System.out.println(97);
        } else {
            System.out.println(88);
        }
}

🌹例题 根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)

    public static void main1(String[] args) {
        //1. 根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)
        Scanner scan = new Scanner(System.in);
        while (scan.hasNext()) {
            int age= scan.nextInt();
            if (age <= 18) {
                System.out.println("少年!");
            }else if (age <= 28) {
                System.out.println("青年!");
            }else if (age <= 55){
                System.out.println("中年!");
            }else {
                System.out.println("老年!");
            }
        }
    }

当然Java当中也支持嵌套分支语句,不过要注意使用嵌套结构需要注意ifelse的配对关系。else总是与它上面的最近的未配对的if配对。所以在写分支与循环语句时,不论几句都应该加上花括号。

🌺2.2switch

switch(整数|枚举|字符|字符串){
 case 内容1 : {
 内容满足时执行语句;
 [break;]
 }
 case 内容2 : {
 内容满足时执行语句;
 [break;]
 }
 ...
 default:{
 内容都不满足时执行语句;
 [break;]
 } 
}

注意事项1 break 不要遗漏, 否则会失去 “多分支选择” 的效果。
注意事项2 switch 中的值只能是 整数|枚举|字符|字符串。
注意事项3 switch 不能表达复杂的条件,如分支循环结构中使用的复合判断语句。
注意事项4 switch 虽然支持嵌套, 但是很丑。

    public static void main(String[] args) {
        int day = 3;
        switch (day) {
            case 1:
                System.out.println("星期一!");
                break;
            case 2:
                System.out.println("星期二!");
                break;
            case 3:
                System.out.println("星期三!");
                break;
            case 4:
                System.out.println("星期四!");
                break;
            case 5:
                System.out.println("星期五!");
                break;
            case 6:
                System.out.println("星期六!");
                break;
            case 7:
                System.out.println("星期日!");
                break;
            default:
                System.out.println("错误!");
                break;
        }


🌹例题 Java中switch语句表达式不支持哪些数据类型?
long,double,float,boolean及其包装类。

🍀3.Java程序的循环结构

🌺3.1while循环

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

循环条件为 true, 则执行循环语句; 否则结束循环.
🌹例题 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。

    public static void main7(String[] args) {
        //7.计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。
        int n = 100;
        double sum = 0;
        for (int i = 1; i <= n; i++) {
            if (i % 2 == 1) {
                sum += 1.0 / i;
            }else {
                sum -= 1.0 / i;
            }
        }
        System.out.println(sum);
    }

🌺3.2for循环

for(表达式1;表达式2;表达式3){ 
	循环体; 
}

表达式1: 用于初始化循环变量.
表达式2: 循环条件.
表达式3: 更新循环变量.

  • “表达式1”可以省略,即不设置初值,但表达式1后的分号不能省略。例如: for(;i<=100;i++)。应当注意:由于省略了表达式1,没有对循环变量赋初值,因此,为了能正常执行循环,应在for语句之前给循环变量赋以初值。
  • 表达式2也可以省略,即不用表达式2来作为循环条件表达式,不设置和检查循环的条件。此时循环无终止地进行下去,也就是认为表达式2始终为真。
  • 表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束。
  • 甚至可以将3个表达式都可省略,即不设初值,不判断条件(认为表达式2为真值),循环变量也不增值,无终止地执行循环体语句,显然这是没有实用价值的。
  • 表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。表达式3也可以是与循环控制无关的任意表达式。但不论怎样写for语句,都必须使循环能正常执行。
  • 表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔。
  • 表达式2关系表达式或逻辑表达式,类型必须是boolean
  • for语句的循环体可为空语句,把本来要在循环体内处理的内容放在表达式3中,作用是一样的。可见for语句功能强,可以在表达式中完成本来应在循环体内完成的操作。

🌹执行顺序:
表达式1 -> 表达式2 -> 循环体语句 -> 表达式3.

🌹例题 编写程序数一下 1到 100 的所有整数中出现多少个数字9。

    public static void main8(String[] args) {
        //8. 编写程序数一下 1到 100 的所有整数中出现多少个数字9。
        int n = 100;
        int cnt = 0;
        for (int i = 1; i <= n; i++) {
            if (i % 10 == 9) {
                cnt++;
            }
            if (i / 10 == 9) {
                cnt++;
            }
        }
        System.out.println(cnt);
    }

当然,循环也支持嵌套。

🌺3.3do…while循环

do{
 	循环语句;
}while(布尔表达式);
int num = 12; 
do { 
 System.out.println(num); 
 num++; 
} while (num <= 10);

循环至少执行一次,使用的场景有限,所以不是经常使用。

🌺3.4break与continue

名称breakcontinue
作用使流程跳到循环体之外,接着执行循环体下面的语句。结束本次循环,即跳过循环体中下面尚未执行的语句,如果是for循环,转到循环体结束点之前,接着执行for语句中的“表达式3”,然后进行下一次是否执行循环的判定。
注意break语句只能用于循环语句和switch语句之中,而不能单独使用。continue语句只能用于循环语句之中,而不能单独使用。

continue语句只结束本次循环,而非终止整个循环。break语句结束整个循环,不再判断执行循环的条件是否成立。

🌹留给读者的一道题:

🍁使用Java语言实现简单的猜数字游戏。🍁
觉得文章写得不错的老铁们,点赞评论关注走一波!谢谢啦!

以上是关于⭐️JavaSE系列⭐️Java程序的选择与轮回——分支结构与循环结构的主要内容,如果未能解决你的问题,请参考以下文章

⭐️JavaSE系列⭐️Java程序的封装——Java方法重载及递归

⭐️JavaSE系列⭐️世界上“最好的语言”是什么?——认识Java编程语言

JavaSE系列Java中的字符串之字符串常用方法与StringBuilder

JavaSE系列Java类与对象,万物皆对象

JavaSE系列Java面向对象之组合多态与接口

JavaSE系列批量处理数据神器——Java数组与引用