⭐️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当中也支持嵌套分支语句,不过要注意使用嵌套结构需要注意if
与else
的配对关系。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
名称 | break | continue |
---|---|---|
作用 | 使流程跳到循环体之外,接着执行循环体下面的语句。 | 结束本次循环,即跳过循环体中下面尚未执行的语句,如果是for循环,转到循环体结束点之前,接着执行for语句中的“表达式3”,然后进行下一次是否执行循环的判定。 |
注意 | break语句只能用于循环语句和switch语句之中,而不能单独使用。 | continue语句只能用于循环语句之中,而不能单独使用。 |
continue
语句只结束本次循环,而非终止整个循环。break
语句结束整个循环,不再判断执行循环的条件是否成立。
🌹留给读者的一道题:
以上是关于⭐️JavaSE系列⭐️Java程序的选择与轮回——分支结构与循环结构的主要内容,如果未能解决你的问题,请参考以下文章
⭐️JavaSE系列⭐️Java程序的封装——Java方法重载及递归
⭐️JavaSE系列⭐️世界上“最好的语言”是什么?——认识Java编程语言