- 循环语句
- for循环
- 例
- while循环
- 例
- 在写代码时,选择for循环还是while循环
- do…while循环
- 无限循环
- 例
- 循环控制
- break
- 例题
- continue
- 例题
- 小结
- 猜数字(经典算法题)
- 生成随机数
- 猜数字代码
- 循环嵌套
- 例题1
- 例题2
- for循环
循环语句
配套完整代码:GitHub仓库
https://github.com/LIN-commit/java-learning
代码所在目录:java-learning/loop/
本节对应代码:
- ForDemo.java : for循环简单示例
- WhileDemo.java :while循环简单示例
- InfiniteLoop.java :无限循环
- InfiniteLoop_error.txt :无限循环错误示例
- BreakDemo.java :break使用示例
- PrimeNumber_Demo1 ;判断一个数是否是质数的写法一
- PrimeNumber_Demo2 :判断一个数是否是质数的写法二
- ContinueDemo.java :continue使用示例
- NumberGuess.java :猜数字经典例题
- PrintPattern.java :打印一个4行5列的图形
- RightTriangle.java :打印一个直角三角形
温馨提示:为方便直接复制运行,代码未写包名;
完整规范的源码结构可查看本人 GitHub 仓库
for循环
for循环格式
for(初始化语句;条件判断语句;条件控制语句){ 循环体语句; }例
打印1~5
对应代码:ForDemo.java
publicstaticvoidmain(String[]args){for(inti=1;i<=5;i++){System.out.println(i);}}[运行结果]
1 2 3 4 5while循环
while循环格式
初始化语句 while(条件判断语句){ 循环体语句; 条件控制语句; }例
题目:利用while循环,实现游戏中连续跳跃五次,用输出语句模拟跳跃逻辑。
对应代码:WhileDemo.java
publicstaticvoidmain(String[]args){inti=1;while(i<=5){System.out.println("游戏人物第"+i+"次跳跃");i++;}}[运行结果]
游戏人物第1次跳跃 游戏人物第2次跳跃 游戏人物第3次跳跃 游戏人物第4次跳跃 游戏人物第5次跳跃在写代码时,选择for循环还是while循环
- for循环:知道循环次数或者循环范围
- while循环:不知道循环次数和范围,只知道循环结束条件
do…while循环
do…while循环语句格式
初始化语句; do{ 循环体语句; 条件控制语句; }while(条件判断语句);小贴士:do…while循环语句是先执行后判断
无限循环
例
对应代码:InfiniteLoop.java
publicstaticvoidmain(String[]args){while(true){System.out.println("hello world");}}[运行结果]:无限输出hello world
hello world hello world hello world ......- 在无限循环的代码块下方,不能写任何代码
对应代码:InfiniteLoop_error.text
publicstaticvoidmain(String[]args){while(true){System.out.println("hello world");}System.out.println("ok");}[运行结果]
java: 无法访问的语句 //代码报错,因为永远无法访问到输出“OK”的那条语句无限循环通常配合break来结束
循环控制
break
只能写在switch或循环中,表示结束,不能单独书写
例
对应代码:BreakDemo.java
publicstaticvoidmain(String[]args){for(inti=1;i<=10;i++){System.out.println(i);if(i==5)break;}}[运行结果]
1 2 3 4 5小贴士:循环的快速生成方式:次数.fori+回车
例题
键盘录入一个大于2的整数,判断是否为质数
- 写法一
对应代码:PrimeNumber_Demo1.java
publicstaticvoidmain(String[]args){//键盘录入一个大于2的整数intnum=0;while(true){System.out.println("输入一个大于2的整数:");Scannersc=newScanner(System.in);num=sc.nextInt();if(num>=2)break;elseSystem.out.println("当前输入的数字不合法,请重新输入");}//判断num是否是一个质数intcount=0;for(inti=2;i<num;i++){if(num%i==0){count++;break;//只要找到一个数字能被num整除,那num就不是质数,后面的数字就没必要判断了}}if(count==0)System.out.println(num+"是质数");elseSystem.out.println(num+"不是质数");}小贴士:在循环里定义的变量只能用于循环,一旦出了循环,就会被销毁,而代码中的num变量,出了while循环之后还会用到,所以要在循环外定义变量。这里我的建议是,在写代码时,尽量不要在循环内定义变量,减少报错的几率。
- 写法二
要证明一个数字是不是质数,就是看它有没有除了1和它本身的因数,且因数都是成对出现的,一个数字大于等于平方根,一个数字小于等于平方根的,所以只需要判断在1到平方根之间有没有数能整除num即可
num的平方根的代码写法是’Math.sqrt(num)’
对应代码:PrimeNumber_Demo2
//判断num是否是一个质数intcount=0;for(inti=2;i<Math.sqrt(num);i++){if(num%i==0){count++;break;}}continue
continue表示结束本次循环,继续下次循环,且只能写在循环中(用法类似于跳过),不能单独书写
例题
循环打印1~5,跳过3
对应代码:ContinueDemo.java
publicstaticvoidmain(String[]args){for(inti=1;i<=5;i++){if(i==3)continue;System.out.println(i);}}[运行结果]
1 2 4 5小结
- break:不能单独书写,只能写在switch或循环中,表示结束,跳出的意思
- continue:不能单独书写,只能写在循环中,结束本次循环,继续下次循环
猜数字(经典算法题)
生成一个1~10之间的随机数,利用键盘录入模拟猜的动作,一直猜,直到猜中为止
生成随机数
写法类似于键盘录入
1.找到Random
(1)在主入口内输入random后回车,变为Random,且在主入口外出现import java.util.Random;这行是确定Random的位置。
(2)在Random后继续输入Random r = new Random();
2.让Random干活
生成不同类型的随机数int num = r.nextInt();
- 如果()里是空的,默认在int的取值范围内取数
- 如果在()里写数字(B),表示随机数的最大值,但不包含B
- 如果在()里写数字(A,B),表示取值范围是A~B,包含A,不包含B
注意:r.nextInt(B)这个写法是Java 17 引入的写法,如果你的JDK版本低于17,请用r.nextInt(B)+1
例
importjava.util.Random;publicclasstest1{publicstaticvoidmain(String[]args){Randomr=newRandom();intnum=r.nextInt();System.out.println(num);}}[运行结果1]
16129913[运行结果2]
-378128417猜数字代码
对应代码:NumberGuess.java
importjava.util.Random;importjava.util.Scanner;publicclasstest1{publicstaticvoidmain(String[]args){//生成一个在1~10之间的随机数Randomr=newRandom();intnum=r.nextInt(1,11);//循环猜数,直到猜中为止intguessNumber=0;//变量命名的规则,第一个单词首字母小写,之后的单词首字母全部大写while(true){System.out.println("输入你猜的数:");Scannersc=newScanner(System.in);guessNumber=sc.nextInt();//提示猜的数偏大还是偏小if(guessNumber<num)System.out.println("猜的数偏小");elseif(guessNumber>num)System.out.println("猜的数偏大");else{System.out.println("猜对了");break;}}}}[运行结果]
输入你猜的数: 5 猜的数偏大 输入你猜的数: 2 猜的数偏小 输入你猜的数: 3 猜的数偏小 输入你猜的数: 4 猜对了循环嵌套
例题1
打印4行5列的图案
*****
*****
*****
*****
System.out.println();表示先打印,再换行System.out.print();去掉ln,表示只打印,不换行
对应代码:PrintPattern.java
publicstaticvoidmain(String[]args){for(intline=1;line<=4;line++){for(intcolumn=1;column<=5;column++){System.out.print("*");}System.out.println();//换行}}[运行结果]
***** ***** ***** *****例题2
打印直角三角形
*
**
***
****
对应代码:RightTriangle.java
publicstaticvoidmain(String[]args){for(intline=1;line<=4;line++){for(intcolumn=1;column<=line;column++)//内层循环的条件可以依赖外层循环的变量System.out.print("*");System.out.println();}}[运行结果]
* ** *** *****
**
***
****
以上就是java循环语句的基础内容了。下一篇我们将学习几道经典例题,打印特殊图形和九九乘法表,欢迎继续关注蓝猫学姐的java学习笔记~