由浅到深认识Java语言(6):控制流程语句
该文章Github地址:https://github.com/AntonyCheng/java-notes
在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.csdn.net/AntonyCheng/article/details/136555245),该模板集成了最常见的开发组件,同时基于修改配置文件实现组件的装载,除了这些,模板中还有非常丰富的整合示例,同时单体架构也非常适合SpringBoot框架入门,如果觉得有意义或者有帮助,欢迎Star & Issues & PR!
上一章:由浅到深认识Java语言(5):运算符
13.流程控制语句
流程控制语句 { 顺序结构 分支结构 循环结构 \bf{流程控制语句}\begin{cases} \bf{顺序结构}\\\bf{分支结构}\\\bf{循环结构} \end{cases} 流程控制语句⎩ ⎨ ⎧顺序结构分支结构循环结构
很多流程里都是循环里包含着分支,分支和循环都是以顺序结构为基础;
顺序结构
程序最基本的执行结构就是顺序结构,即程序是顺序执行的,从上到下;
分支结构
import java.util.Scanner;
class demo{public static void main(String[] args){System.out.println("请输入一个年龄:");Scanner sc = new Scanner(System.in);int age = sc.nextInt();if(age<18){System.out.println("未成年!");}else if(age<30){System.out.println("已成年!");}else if(age<45){System.out.println("已壮年!");}else{System.out.println("已老年!");}}
}
程序提供了多条分支,但在执行时,根据实际情况只会选择其中一条分支来执行;
if-else
语法结构:
if(条件一){执行语句一;
}else if(条件二){执行语句二;
}else if(条件三){执行语句三;
}else{执行语句四;
}
示例如下:
class demo{public static void main(String[] args){int a = 10;int b = 20;if(a>b){System.out.println("a>b");}else if(a<b){System.out.println("a<b");}else {System.out.println("a=b");}}
}
打印效果如下:
注意:
-
if(条件)
之后的内容,可以是一条语句,也可以是多条语句组成的语句块,语句块就必须用{}
包裹,如果没有使用{}
包裹,那么就只能有一条语句,作为if(语句)
之后的内容;package top.sharehome.Bag;public class Demo {public static void main(String[] args) {int a = 3, b = 4;if(a>b)System.out.println("a.hello world");System.out.println("b.hello world");} }
打印效果如下:
上例说明,第二条
hello world
没有被包含在if
语句之内,所以被打印了出来; -
条件一定是 boolean 表示;
案例一:
只有年龄超过18岁的学生才能玩游戏,现在编写一个程序,来判断一个学生是否可以玩游戏;
示例如下:
import java.util.Scanner;
class demo{public static void main(String[] args){System.out.println("请输入你的年龄:");Scanner sc = new Scanner(System.in);int age = sc.nextInt();if(age<18){System.out.println("不可以玩游戏");}else{System.out.println("可以玩游戏");}}
}
打印效果如下:
案例二:
如果成绩大于 90 ,男生的话送一台 Xbox,女生的话送一只口红;
示例如下:
import java.util.Scanner;
class demo{public static void main(String[] args){Scanner sc = new Scanner(System.in);System.out.println("请输入你的成绩:");double score = sc.nextDouble();System.out.println("请输入你的性别(男/女==1/2):");int sex = sc.nextInt();if (score<90){System.out.println("没有礼物!");}else{if(sex == 1){System.out.println("送你Xbox!");}else if(sex == 2){System.out.println("送你口红!");}else{System.out.println("请输入切确性别!");}}}
}
打印效果如下:
案例三:
妻子嘱咐丈夫回家是买十个苹果,如果碰到卖西瓜的买一个,变成模拟场景;
示例如下:
import java.util.Scanner;
class demo{public static void main(String[] args){System.out.println("首先,你想有卖西瓜的人么?有/无 == 1/0");Scanner sc = new Scanner(System.in);int sellWM = sc.nextInt();System.out.println("丈夫回家了,但水果店还开着,需要去买苹果!");System.out.println("...");System.out.println("挑苹果……");System.out.println("挑了 10 个苹果!");if (sellWM == 1){System.out.println("有西瓜,买一个吧!");System.out.println("和自己媳妇儿一起吃西瓜!");}else{System.out.println("没西瓜,算了!");System.out.println("给自己媳妇说没有西瓜,然后上床睡觉去了!");}}
}
打印效果如下:
案例四:
从键盘输入一个成绩,根据成绩的情况给出等级,要求顺序书写和嵌套书写;
顺序写法:
import java.util.*;
class demo{public static void main(String[] args){System.out.println("请输入你的成绩:");Scanner sc = new Scanner(System.in);double score = sc.nextDouble();if(score < 60){System.out.println("不及格!");}else if(score < 70){System.out.println("中下等!");}else if(score < 80){System.out.println("中上等!");}else if(score < 90){System.out.println("良等!");}else if(score < 100){System.out.println("优等!");}else{System.out.println("最佳!");}}
}
嵌套写法:
import java.util.*;
class demo{public static void main(String[] args){System.out.println("请输入你的成绩(0-100):");Scanner sc = new Scanner(System.in);double score = sc.nextDouble();if (score < 60){System.out.println("不及格!");}else{if(score <70){System.out.println("中下等!");}else{if(score <80){System.out.println("中上等!");}else{if(score <90){System.out.println("良等!");}else{if(score <100){System.out.println("优等!");}else{System.out.println("最佳!");}}}}}}
}
打印效果如下:
案例五:
年龄程序,让用户输入年龄,告诉用户结论;
示例如下:
import java.util.*;
class demo{public static void main(String[] args){System.out.println("请输入你的年龄:");Scanner sc = new Scanner(System.in);int age = sc.nextInt();if(age<0){System.out.println("输入错误!");}else if(age<18){System.out.println("你未成年!");}else if(age<25){System.out.println("年龄轻轻!");}else if(age<35){System.out.println("青壮年!");}else if(age<45){System.out.println("正值壮年!");}else if(age<55){System.out.println("正值中年!");}else if(age<65){System.out.println("将步入老年!");}else if(age<100){System.out.println("已经老年!");}}
}
打印效果如下:
案例六:
完成如下打印;
示例如下:
import java.util.*;
class demo{public static void main(String[] args){Scanner sc = new Scanner(System.in);System.out.println("请输入T恤价格:");double TPrice = sc.nextDouble();System.out.println("请输入网球鞋价格:");double TennisShoePrice = sc.nextDouble();System.out.println("请输入网球拍价格:");double TennisPrice = sc.nextDouble();System.out.println("请输入购买T恤购买数量:");int TQuantity = sc.nextInt();System.out.println("请输入购买网球鞋的数量:");int TennisShoeQuantity = sc.nextInt();System.out.println("请输入购买网球拍的数量:");int TennisQuantity = sc.nextInt();double all = TennisPrice + TPrice + TennisShoePrice;double Discount = 0;if(all<1000){Discount = 10;}else if(all<2000){Discount = 8;}else if(all<3000){Discount = 7.5;}else if(all<4000){Discount = 6;}else{Discount = 5;}System.out.println("***************消费单***************");System.out.println("购买物品\t单价\t个数\t金额");System.out.println("T恤\t\t"+TPrice+"\t"+TQuantity+"\t"+TPrice*TQuantity);System.out.println("网球鞋\t\t"+TennisShoePrice+"\t"+TennisShoeQuantity+"\t"+TennisShoePrice*TennisShoeQuantity);System.out.println("网球拍\t\t"+TennisPrice+"\t"+TennisQuantity+"\t"+TennisPrice*TennisQuantity);System.out.println("***********************************");System.out.println("折扣:\t"+Discount+"折");System.out.println("消费总额:\t"+"¥"+(TPrice*TQuantity+TennisPrice*TennisQuantity+TennisShoePrice*TennisShoeQuantity));System.out.println("实际消费:\t"+"¥"+((TPrice*TQuantity+TennisPrice*TennisQuantity+TennisShoePrice*TennisShoeQuantity)*(Discount*0.1)));}
}
打印效果如下:
注意:\t
是制表符,即 Tab
;
switch-case
语法结构:
swich(表达式){case 条件一 :语句一;break;case 条件二 :语句二;break;default :语句三;break;
}
注意:break 是为了防止 case 穿透;表达式是一个能够产生值的语句,可能是变量,也可以是语句;如果表达式都不满足以下条件,则运行 default 语句;
注意:
表达式的种类:byte
, short
, char
, int
, 枚举
, String
;
case
后跟的必须是一个固定的值,不能是范围;
case
穿透指的是
案例一:
输入一个月份,判断当前月份是属于哪一个季节,只能用 swich
来做;
import java.util.*;
class demo{public static void main(String[] args){Scanner sc = new Scanner(System.in);System.out.println("请输入当前月份:");int month = sc.nextInt();switch (month){case 2:case 3:case 4:System.out.println("春天");break;case 5:case 6:case 7:System.out.println("夏季");break;case 8:case 9:case 10:System.out.println("秋季");break;case 11:case 12:case 1:System.out.println("冬季");break;}}
}
打印效果如下:
案例二:
使用 swich
语句改写判断学生成绩的等级;
import java.util.*;
class demo{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("写出学生的成绩(0-100):");double score = scanner.nextDouble();int result = (int)score/10;switch(result){case 0:case 1:case 2:case 3:case 4:case 5:System.out.println("不及格");break;case 6:case 7:System.out.println("中");break;case 8:System.out.println("良");break;case 9:case 10:System.out.println("优");break;default:System.out.println("请重新输入!");break;}}
}
打印效果如下:
案例三:
利用 switch
实现一个计算机操作:第一次输入一个整数,第二次输入一个运算符,第三次输入一个整数;
import java.util.*;
class demo{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入第一个整数:");double a = scanner.nextDouble();System.out.println("请输入运算符:");String c = scanner.next();System.out.println("请输入第二个整数:");double b = scanner.nextDouble();double result = 0;switch(c){case "+":result = a+b;System.out.println(result);break;case "-":result = a-b;System.out.println(result);break;case "*":result = a*b;System.out.println(result);break;case "/":result = a/b;System.out.println(result);break;}}
}
打印效果如下:
程序实例
示例一:
定义三个整型变量 x , y , z ,并且从键盘初始化变量值,判断三个变量的大小,将较大的值赋给变量 max ,将 max 输出,注意输入使用 scanner 输入;
import java.util.*;
class demo{public static void main(String[] args){int a;int b;int c;Scanner sc = new Scanner(System.in);System.out.println("请输入第一个数:");a = sc.nextInt();System.out.println("请输入第二个数:");b = sc.nextInt();System.out.println("请输入第三个数:");c = sc.nextInt();int max = 0;if(a>=b&&a>=c){max = a;}else if(b>=a&&b>=c){max = b;}else if(c>=a&&c>=b){max = c;}System.out.println("最大值:"+max);}
}
也可以用三元运算符获得这样的结论:
import java.util.*;
class demo{public static void main(String[] args){int a;int b;int c;Scanner sc = new Scanner(System.in);System.out.println("请输入第一个数:");a = sc.nextInt();System.out.println("请输入第二个数:");b = sc.nextInt();System.out.println("请输入第三个数:");c = sc.nextInt();int max = 0;max = a > c ? a > b ? a : b : c > b ? c : b;// a>c? (a>b?a:b) : (c>b?c:b);System.out.println("最大值:" + max);}
}
打印效果如下:
实例二:
饭店里面有五道菜:黄花鱼200块;烤鸭100块;红烧肉60块;小炒肉40块;白水豆腐10块;一个客人进了饭店,根据身上的钱来决定吃哪一道菜,编程模拟:
import java.util.*;
class demo{public static void main(String[] args){int a = 10;int b = 40;int c = 60;int d = 100;int e = 200;Scanner scanner = new Scanner(System.in);System.out.println("请输入你现在有的钱:");int MY_MONEY = scanner.nextInt();if(MY_MONEY>=200){System.out.println("上黄花鱼!");MY_MONEY -= 200;}else if(MY_MONEY>=100){System.out.println("上烤鸭!");MY_MONEY -= 100;}else if(MY_MONEY>=60){System.out.println("上红烧肉!");MY_MONEY -= 60;}else if(MY_MONEY>=40){System.out.println("上小炒肉!");MY_MONEY -= 40;}else if(MY_MONEY>=10){System.out.println("上白水豆腐!");MY_MONEY -= 10;}else{System.out.println("你没钱!");}System.out.println("你还有"+MY_MONEY+"块钱!");}
}
打印效果如下:
实例三:
编写程序,判断给定的某个年份是否为闰年(闰年能被4整除,不能被100整除,但能被400整除)
import java.util.*;
class demo{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入一个年份:");int Year = scanner.nextInt();if((Year%4==0 && Year%100!=0) || (Year%400==0)){System.out.println(Year+"是一个闰年!");}else{System.out.println(Year+"不是一个闰年!");}}
}
打印效果如下:
实例四:
编程实现已知某人的工资(要求输入),求他应该缴纳的个人所得税以及最后得到的工资。个人所得税计算方法计算方法:
全月应纳税所得额=工资薪金所得-3500
应纳税额=应纳税所得额*税率-速算扣除数
级数 | 全月应交税所得额(x) | 税率(%) | 速算扣除数 |
---|---|---|---|
1 | x<=500 | 5 | 0 |
2 | 500<x<=2000 | 10 | 25 |
3 | 2000<x<=5000 | 15 | 125 |
4 | 5000<x<=20000 | 20 | 375 |
5 | 20000<x<=40000 | 25 | 1375 |
6 | 40000<x<=60000 | 30 | 3375 |
7 | 60000<x<=80000 | 35 | 6375 |
8 | 80000<x<=100000 | 40 | 10375 |
9 | x>100000 | 45 | 15375 |
import java.util.*;public class demo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("请输入你的月薪:");double salary = sc.nextDouble();double should = salary - 3500;if(should<=500) {System.out.println("你应该交 "+(should*0.05)+"块钱!");System.out.println("你能够得到 "+(should-(should*0.05)+3500)+"块钱!");}else if(should>500&&should<=2000) {System.out.println("你应该交 "+(should*0.1-25)+"块钱!");System.out.println("你能够得到 "+(should-(should*0.1-25)+3500)+"块钱!");}else if(should>2000&&should<=5000) {System.out.println("你应该交 "+(should*0.15-125)+"块钱!");System.out.println("你能够得到 "+(should-(should*0.15-125)+3500)+"块钱!");}else if(should>5000&&should<=20000) {System.out.println("你应该交 "+(should*0.2-375)+"块钱!");System.out.println("你能够得到 "+(should-(should*0.2-375)+3500)+"块钱!");}else if(should>20000&&should<=40000) {System.out.println("你应该交 "+(should*0.25-1375)+"块钱!");System.out.println("你能够得到 "+(should-(should*0.25-1375)+3500)+"块钱!");}else if(should>40000&&should<=60000) {System.out.println("你应该交 "+(should*0.30-3375)+"块钱!");System.out.println("你能够得到 "+(should-(should*0.30-3375)+3500)+"块钱!");}else if(should>60000&&should<=80000) {System.out.println("你应该交 "+(should*0.35-6375)+"块钱!");System.out.println("你能够得到 "+(should-(should*0.35-6375)+3500)+"块钱!");}else if(should>80000&&should<=100000) {System.out.println("你应该交 "+(should*0.40-10375)+"块钱!");System.out.println("你能够得到 "+(should-(should*0.40-10375)+3500)+"块钱!");}else {System.out.println("你应该交 "+(should*0.45-15375)+"块钱!");System.out.println("你能够得到 "+(should-(should*0.45-15375)+3500)+"块钱!");}sc.close();}
}
打印效果如下:
实例五:
模拟用户登录,提示用户输入用户名和密码,和本地的数据进行比对,如果成功提示登陆成功,否则提示失败,然后循环用户是否再次输入;
import java.util.*;public class demo {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String username = "陈如颖";String password = "020114";boolean b = false;while(true) {System.out.println("请输入用户名:");String user = scanner.next();System.out.println("请输入密码:");String passwd = scanner.next();if(username.equals(user)&&password.equals(passwd)){System.out.println("登陆成功!");break;}else{System.out.println("请选择是否继续登录?(true/false)");b = scanner.nextBoolean();}}}
}
打印效果如下:
循环结构
定义:满足一定的条件下,可以重复执行的语句;
java
中的循环语句:
for
循环while
循环do...while
循环
循环语句的组成成分:任何一个循环语句都由四个部分组成;
举例说明:
for (int i = 0;i < 4;i++){System.out.println("Hello World!");
}
- 循环条件:能够让循环终止的条件,如果循环条件设计得不好,就很容易造成死循环;
- 循环变量:变量中存的数据,该数据会发生变化,当数据达到一定条件时触发终止条件;
- 迭代部分:让循环变量进行更新迭代,如果没有迭代部分,循环变量永远不会变化,也就不会让循环条件终止;
- 循环体:每次循环要做的事情;
for循环
语法结构:
for (循环变量;循环条件;迭代部分){循环体;
}
注意:
- 循环变量的定义位置:可以在
for
循环小括号之内,也可以在for
循环外部,尽量写在小括号之内,因为该变量只存在于此循环之内; - 循环条件在每次循环之前都要判断一次,当循环条件为
true
时,循环体才会被执行,否则循环结束; - 迭代部分:对循环变量的更新并不是固定的
i++
,也可以是i += 2
;
案例一:
打印 0-100 之间的所有数;
import java.util.*;class demo {public static void main(String[] args) {int i = 0;int count = 0;for (i = 0; i <= 100; i++) {System.out.print(i + "\t");count++;if(count == 8) {System.out.println();count = 0;}}}
}
打印效果如下:
案例二:
计算 0-100 的和;
import java.util.*;
class demo{public static void main(String[] args){int i = 0;int sum = 0;for (i = 0;i <= 100;i++){sum += i;}System.out.println(sum);}
}
打印效果如下:
案例三:
打印 0-100 之间的偶数;
import java.util.*;
class demo{public static void main(String[] args){int i = 0;for (i = 0;i <= 100;i+=2){System.out.println(i);}}
}
或者 :
import java.util.*;
class demo{public static void main(String[] args){int i = 0;for (i = 0;i <= 100;i++){if (i%2==0){System.out.println(i);}}}
}
打印效果如下:
案例四:
打印完数;
import java.util.*;
class demo{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.print("请输入你想求完数的范围:0~");int num = scanner.nextInt();System.out.println("该范围里的完数有:");for(int i=1; i<=num; i++){int sum = 0;for(int j=1; j<i; j++){if(i%j==0){sum += j;}}if(sum == i){System.out.print(i+"");}}}
}
打印效果如下:
while循环
语法结构:
循环变量
while(循环变量){循环体;
}
案例一:
打印 0-100 之间所有的奇数;
import java.util.*;
class demo{public static void main(String[] args){int i = 0;while(i<=100){if(i%2!=0){System.out.println(i);}i++;}}
}
打印效果如下:
do…while循环
语法格式:
do{循环体;迭代部分;
}while(循环条件);
特点:无论循环条件是否成立,do...while
循环都会先执行一遍,在进行循环条件的判断!
嵌套循环
定义:一个循环充当另一个循环的循环体,也就是说循环里还有循环;(多重循环)
**关键:**内层循环条件往往和外层循环的循环变量有着紧密关系;
练习一:
打印五行 0-10 ;
import java.util.*;
class demo{public static void main(String[] args){for (int i=0; i<5 ;i++){for (int j=0; j<11;j++){System.out.print(j+"\t");}System.out.println();}}
}
打印效果如下:
练习二:
打印如下图形:
*****
*****
*****
*****
*****
import java.util.*;
class demo{public static void main(String[] args){for (int i=0; i<5 ;i++){for (int j=0; j<5;j++){System.out.print("*");}System.out.println();}}
}
打印效果如下:
练习三:
打印如下图形:
**
***
****
*****
import java.util.*;
class demo{public static void main(String[] args){for (int i=0; i<5 ;i++){for (int j=0; j<=i;j++){System.out.print("*");}System.out.println();}}
}
打印效果如下:
练习四:
打印如下图形:
*****
****
***
**
*
import java.util.*;
class demo{public static void main(String[] args){for (int i=0; i<5 ;i++){for (int j=0; j<5-i;j++){System.out.print("*");}System.out.println();}}
}
打印效果如下:
练习五:
打印如下图形:
**
***
****
*****
****
***
**
*
import java.util.*;
class demo{public static void main(String[] args){for (int i=0; i<9 ;i++){if(i<5){for(int j=0; j<i+1;j++){System.out.print("*");}System.out.println();}else{for(int j=0; j<9-i;j++){System.out.print("*");}System.out.println();}}}
}
打印效果如下:
练习六:
打印如下图形:
*
***
*****
*******
import java.util.*;
class demo{public static void main(String[] args){for (int i = 0; i < 4;i++){for (int k = 0; k < 4-i;k++){//打印空格System.out.print(" ");}for(int j = 0; j < 2*i+1; j++){//打印 *System.out.print("*");}System.out.println();}}
}
打印效果如下:
练习七:
打印如下图形:
*******
*****
***
*
import java.util.*;
class demo{public static void main(String[] args){for (int i = 0; i < 5;i++){for (int j = 0; j < i;j++){System.out.print(" ");}for (int k = 0; k < 2*(3-i)+1; k++){System.out.print("*");}System.out.println();}}
}
打印效果如下:
练习八:
打印如下图形:
*
* *
* * *
* * * *
import java.util.*;
class demo{public static void main(String[] args){for (int i = 0; i < 4;i++){for (int j = 0; j < 3-i;j++){System.out.print(" ");}for (int k = 0; k < i+1;k++){System.out.print("* ");}System.out.println();}}
}
打印效果如下:
程序实例
实例一:
在控制台输出 100-999
之间所有的“水仙花数”;
所谓的水仙花数是指一个三位数,其各个位数字的立方和等于该数本身;
import java.util.*;
class demo{public static void main(String[] args){int i = 0;for(i = 100;i<1000;i++){int a = i%10;int b = (i/10)%10;int c = i/100;if(a*a*a+b*b*b+c*c*c == i){System.out.println(i+"是水仙花数!");}}}
}
打印效果如下:
实例二:
一张纸的厚度是 0.2 mm,多少张纸叠加可以达到珠穆朗玛峰的高度(8848.13m);
import java.util.*;class demo {public static void main(String[] args) {int pepar = 2;int count = 0;int mountain = 88484300;int i = 0;for(i = 0; pepar < mountain; i++){pepar += 2;count += 1;}System.out.println(count);}
}
打印效果如下:
实例三:
计算一个整数的阶层;
import java.util.*;
class demo{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入一个整数:");int num = scanner.nextInt();int a = 1;for (int i = 1; i <= num; i++){a *= i;}System.out.println(a);}
}
打印效果如下:
实例四:
打印 100 以内能被 4 整除但不能被 7 整除的数据,每行打印 6 个;
import java.util.*;
class demo{public static void main(String[] args){int count = 0;for (int i = 0; i <= 100; i++) {if (i%4==0&&i%7!=0){System.out.print(i+"\t");count++;if (count == 6){System.out.println("\n");count = 0;}}}}
}
打印效果如下:
实例五:
打印1000以内的所有素数,每20个一行;
import java.util.*;
class demo{public static void main(String[] args){int count = 0;for (int i = 1; i < 1000; i++){boolean b = false;for (int j = 2; j < i; j++){if(i%j==0){b = true;}}if(!b){System.out.print(i+" ");count++;if(count==20){System.out.println();count = 0;}}}}
}
打印效果如下:
实例六:
求 1-3+5-7+……-99+101 的值;
import java.util.*;public class demo {public static void main(String[] args) {boolean b = true;int n = 0;for(int i = 1; i < 102; i+=2) {if(b==true) {n+=i;b=false;}else if(b==false) {n-=i;b=true;}}System.out.println(n);}
}
打印效果如下:
实例七:
百钱买百鸡:公鸡五元一只,母鸡三元一只,小鸡一元三只,如果用100元钱,不欠不赊,可以买公鸡,母鸡,小鸡各多少只?
import java.util.*;public class demo {public static void main(String[] args) {for (int i = 0; i <21;i++ ){for(int j = 0; j < 34;j++ ){int k = 100-i-j;if(i*5+j*3+k*(1/3f)==100){System.out.println("公鸡"+i+" 母鸡"+j+" 小鸡"+k);}}}}
}
打印效果如下:
循环总结
Q : Q: Q:循环语句能帮助我们解决说明问题?
A : A: A:解决要重复写的代码(循环体),循环是一定要有终止的(循环条件,循环变量迭代);
补充:死循环;
while(true){}
和 for( ; ; ){}
任务一:
求 1-1000 之间满足“用 3 除余 2 ;用 5 除余 3 ;用 7 除余 2 ”的数,且一行只打印5个数;
import java.util.*;
class demo{public static void main(String[] args){int count = 0;for (int i = 1; i < 1001; i++){if(i%3==2&&i%5==3&&i%7==2){System.out.print(i+"\t");count++;if(count==5){System.out.println("\n");count = 0;}}}}
}
打印效果如下:
任务二:
输出 99 乘法表;
import java.util.*;
class demo{public static void main(String[] args){int i = 0;int j = 0;for (i = 1; i < 10;i++){for (j = 1; j <= i;j++){System.out.print(j+" * "+i+" = "+(i*j)+" "); }System.out.println();}}
}
打印效果如下:
三个关键字
break
-
在 switch 中使用,用来防止 case 穿透;
-
在循环中使用,用来跳出整个循环;
循环有两个终止的情况:一是循环条件不满足,二是遇到了
break
continue
- 在循环中使用,用来结束本次循环,继续下一次循环;
return
- 在方法里经常看到 return ,方法里的 return 起到的是返回的作用;
- 目前在循环中出现的 return ,它不只是结束了循环,而是结束了整个循环所在的方法;
关键字和嵌套循环
break:结束最近的那个整个循环;
continue:结束最近的那个当次循环;
return:结束掉循环所在的整个函数;
实例再证:
打印出1000以内的素数:
import java.util.*;
class demo{public static void main(String[] args){int count = 1;for(int i=1; i < 1000;i++){boolean b = false;for(int j=2; j < i;j++){if (i%j==0){b = true;break; //能够提前结束循环,简化运算}}if (!b){System.out.print(i+" ");count++;if(count==20){System.out.println();count = 1;}}}}
}
打印效果如下:
循环标签:
只适用于给循环打上标签,目的是使用 break 或 continue 时选择性打破循环;
break 正常代码:
import java.util.*;
class demo{public static void main(String[] args){for (int i=1; i < 10;i++){for (int j=1; j <= 10;j++){if (j%4==0){break;}System.out.print(j+" ");}System.out.println();}}
}
打印效果如下:
break 强制代码(需要加一个标识符,符名自取):
import java.util.*;
class demo{public static void main(String[] args){good:for (int i=1; i < 10;i++){ //循环标识符添加在循环之前for (int j=1; j <= 10;j++){if (j%4==0){break good; //结束时也要带上标识符}System.out.print(j+" ");}System.out.println();}}
}
打印效果如下:
continue 正常代码:
import java.util.*;
class demo{public static void main(String[] args){for (int i=1; i < 10;i++){ for (int j=1; j <= 10;j++){if (j%4==0){continue; }System.out.print(j+" ");}System.out.println();}}
}
打印效果如下:
continue 强制代码:
import java.util.*;
class demo{public static void main(String[] args){good:for (int i=1; i < 10;i++){ //循环标识符添加在循环之前for (int j=1; j <= 10;j++){if (j%4==0){continue good; //结束时也要带上标识符}System.out.print(j+" ");}System.out.println();}}
}
打印效果如下:
下一章:由浅到深认识Java语言(7):方法(函数)
相关文章:

由浅到深认识Java语言(6):控制流程语句
该文章Github地址:https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.c…...

lv17 安防监控项目实战 3
代码目录 框架 our_storage 编译最终生成的目标文件obj 编译生成中间的.o文件 data_global.c 公共资源定义(使用在外extern即可)定义了锁定义了条件变量消息队列id、共享内存id、信号量id及key值发送短信、接收短信的号码向消息队列发送消息的函数&am…...
文本处理基本方法
目录 分词 jieba 词性标注 😆😆😆感谢大家观看😆😆😆 分词 在中文文本中,由于词与词之间没有明显的界限符,如英文中的空格,因此分词是中文自然语言处理的一个基础且…...

Java面试题(Spring篇)
💟💟前言 友友们大家好,我是你们的小王同学😗😗 今天给大家打来的是 Java面试题(Spring篇) 希望能给大家带来有用的知识 觉得小王写的不错的话麻烦动动小手 点赞👍 收藏⭐ 评论📄 小王的主页…...

操作系统:malloc与堆区内存管理
malloc是函数而不是系统调用,他的底层是同调调用brk和mmap这两个系统调用实现功能的,具体选择brk还是mmap要看申请的空间大小以及malloc中的阈值(一般是128kb) 注意申请的空间只有使用才会触发缺页中断映射到物理内存 不理解的话先…...

javaSwing推箱子游戏
一、简介 策略性游戏可以锻炼人的思维能力还能缓解人的压力,使人们暂时忘却生活当中的烦恼,增强人们的逻辑思维能力,游戏的艺术美也吸引着越来越多的玩家和厂商,寓教于乐,在放松人们心情的同时还可以活跃双手。在人类…...

JAVA多线程之JMM
文章目录 1. Java内存模型2. 内存交互3. 三大特性3.1 可见性3.1.1 可见性问题3.1.2 原因3.1.3 解决方法 3.2 原子性3.3 有序性 4. 指令重排5. JMM 与 happens-before5.1 happens-before关系定义5.2 happens-before 关系 在继续学习JUC之前,我们现在这里介绍一下Java…...

Windows10 专业版 系统激活
Windows10 专业版 系统激活 参考: Windows10系统激活技巧 第一步:在电脑桌面,新建一个文本文档 第二步:打开文本文档,输入以下代码后,直接保存关闭文档 slmgr/skms kms.03k.org slmgr/ato 第三步࿱…...
C#使用LINQ和EF Core
在实际应用中,您可以使用 LINQ 查询 EF Core 来执行各种数据库操作。通过 LINQ,您可以轻松地过滤、排序、分组和连接数据。 要使用LINQ查询EF Core中的数据,您可以按照以下步骤进行操作: 首先,确保您已经安装了 Entit…...

数字人解决方案— SadTalker语音驱动图像生成视频原理与源码部署
简介 随着数字人物概念的兴起和生成技术的不断发展,将照片中的人物与音频输入进行同步变得越来越容易。然而,目前仍存在一些问题,比如头部运动不自然、面部表情扭曲以及图片和视频中人物面部的差异等。为了解决这些问题,来自西安…...

HTML5语法总结
文章目录 一.HTML基本框架二.标题标签三.段落标签四.换行与水平线标签五.文本格式化标签(加粗、倾斜、下划线、删除线)六.图像标签扩展:相对路径,绝对路径与在线网址 七.超链接标签八.音频标签九.视频标签十.列表标签十一.表格标签扩展:表格结构标签合并…...

在github下载的神经网络项目,如何运行?
github网页上可获取的信息 在github上面,有一个requirements.txt文件,该文件说明了项目要求的python解释器的模块。 - 此外,还有一个README.md文件,用来说明项目的运行环境以及其他的信息。例如python解释器的版本是3.7、PyTorc…...

spring boot学习第十四篇:使用AOP编程
一、基本介绍 1,什么是 AOP (1)AOP 为 Aspect Oriented Programming 的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 (2)利用 AOP…...

凯特信安云签解决方案
联合解决方案 凯特信安基于《电子签名法》设计“云签服务方案”,应用人脸识别、电子签章签名云服务等技术,支持多个自然人、多个企业等签名,满足各种移动终端签署的应用场景。面向不动产登记、工改系统等社会公众服务系统,针对自然…...

【xr806开发板使用】连接wifi例程实现
##开发环境 win10 WSL ##1、环境配置 参考:https://aijishu.com/a/1060000000287513 首先下载安装wsl 和ubuntu https://docs.microsoft.com/zh-cn/windows/wsl/install (1)安装repo: 创建repo安装目录: mkdir ~/…...

停车管理系统asp.net+sqlserver
停车管理系统asp.netsqlserver 说明文档 运行前附加数据库.mdf(或sql生成数据库) 主要技术: 基于asp.net架构和sql server数据库, 功能模块: 停车管理系统asp.net sqlserver 用户功能有菜单列表 我的停车记录 专…...

新增多项功能,龙讯旷腾开源机器学习力场PWMLFF 2024.3版本上线
人工智能与传统计算机模拟结合是当今科学计算的一大趋势,机器学习力场作为其中的一个重要方向,能够显著提升分子动力学模拟的精度和效率。PWMLFF是一套由龙讯旷腾团队开发,在 GNU 许可下的开源软件包,用于快速生成媲美从头算分子动力学(AIMD&…...

Docker常用命令练习
文章目录 Docker常用命令练习1.docker 基础命令2.镜像命令3.保存镜像4.加载镜像5.容器命令6.环境变量7. --rm8. --networkhost Docker常用命令练习 1.docker 基础命令 安装docker yum install docker启动docker systemctl start docker关闭docker systemctl stop docker重…...
Kafka(十)安全
目录 Kafka安全1 安全协议1.1 PALINTEXT1.2 SSL1.2.1 生成服务端证书1.2.2 生成客户端证书1.2.3 修改配置listenersadvertised.listenerslistener.security.protocol.mapinter.broker.listener.namesecurity.inter.broker.protocolcontrol.plane.listener.name 1.3 SASL_PLAINT…...

流畅的 Python 第二版(GPT 重译)(四)
第二部分:函数作为对象 第七章:函数作为一等对象 我从未认为 Python 受到函数式语言的重大影响,无论人们说什么或想什么。我更熟悉命令式语言,如 C 和 Algol 68,尽管我将函数作为一等对象,但我并不认为 Py…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...

莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
如何配置一个sql server使得其它用户可以通过excel odbc获取数据
要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据,你需要完成以下配置步骤: ✅ 一、在 SQL Server 端配置(服务器设置) 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到:SQL Server 网络配…...

【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...