循环语句
功能
在循环条件满足的情况下,反复执行特定代码
循环语句的四个组成部分
初始化部分(init_statement)
循环条件部分(test_exp)
循环体部分(body_statement)
迭代部分(alter_statement)
循环语句分类
for 循环
while 循环
do/while 循环
for循环语句
语法格式
for (初始化表达式; 布尔值测试表达式; 更改表达式){ 语句或语句块; }
应用举例
package com.uncleyong; public class TestFor { public static void main(String[] args) { //从 1 打印到 100 for(int i = 1; i <= 100; i++){ System.out.println(i); } } }
while循环语句
语法格式
[初始化语句] while( 布尔值测试表达式){ 语句或语句块; [更改语句;] }
应用举例
package com.uncleyong; public class TestWhile { public static void main(String[] args) { int i = 1; while(i <= 100){ System.out.println(i); i++; } } }
do/while循环语句
语法格式
[初始化语句] do{ 语句或语句块; [更改语句;] }while(布尔值测试表达式);
应用举例
package com.uncleyong; public class TestDoWhile { public static void main(String[] args) { //do ... while 一定会执行一次循环体. int j = 101; do{ System.out.println("^^" + j++); }while(j <= 100); } }
几个循环的应用场景
循环次数确定时一般使用for循环
循环次数不确定时一般使用while和do...while循环
特殊流程控制语句:break、continue
break
break语句用于终止某个语句块的执行,一般与if一起使用
break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块
label1: { …… label2: { …… label3: { …… break label2; …… } } }
语法格式
{ …… break; …… }
应用举例
public class TestBreak{ public static void main(String args[]){ for(int i = 0; i<10; i++){ if(i==3) break; System.out.println(" i =" + i); } System.out.println("Game Over!"); } }
continue
continue语句用于跳过某个循环语句块的一次执行,也就是跳出本次循环,执行下一次循环,本次循环尚未执行完的代码不再执行
continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环
语法格式
{ …… continue; …… }
应用举例
package com.uncleyong; public class TestContinue { public static void main(String [] args){ //continue语句用于跳过某个循环语句块的一次执行 for(int i = 1; i <= 100; i++){ if(i % 2 != 0){ //break和continue之后不能有其他的语句, //因为程序永远不会执行break 和 continue之后的语句。 continue; // System.out.println("test"); } System.out.println(i); } } }
特殊流程控制语句(break、continue)说明
break只能用于switch语句和循环语句中。
continue 只能用于循环语句中。
标号语句必须紧接在循环的头部。标号语句不能用在非循环语句的前面。
break和continue之后不能有其他的语句,因为程序永远不会执行break 和 continue之后的语句,否则编译出错。
练习题(参考答案已放在Q群文件中)
1、求1到100之间所有偶数的和。用for和while语句分别完成
OuShu.java
2、从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序
TestCount.java
3、打印 1-100 之间的所有素数
SuShu.java
4、分别打印如下两个直角三角形
第一个: * *** ***** ******* 第二个: **** *** ** *
5、打印等腰三角形
6、【java笔试题】输入带*字符串,把*左移输出,其他字母按原顺序输出,例如:输入“as*c*gkl**o*p*h”,输出******ascgkloph
此参考答案不是最优的
package com.qzcsbj; import java.util.Arrays; import java.util.Scanner; /** * @create : 2020/3/13 21:10 * @description : <描述> * @博客 : www.cnblogs.com/uncleyong * @QQ群 : 652122175 * @公众号 : 全栈测试笔记 */ public class Test { public static void main(String[] args) { /** * 【java笔试题】输入带*字符串,把*左移输出,其他字母按原顺序输出, * 例如输入“as*c*gkl**o*p*h”,输出******ascgkloph */ System.out.print("请输入带*字符串:"); Scanner scanner = new Scanner(System.in); String str = scanner.nextLine(); // String str = "as*c*g"; System.out.println("移动前:" + str); char[] arr=str.toCharArray(); for (int i=0;i<arr.length-1;i++){ for (int j=1;j<arr.length-1-i;j++){ if (arr[j]=='*' && arr[j-1]!='*'){ // 把*左移 char temp = arr[j]; arr[j] = arr[j-1]; arr[j-1] = temp; } } System.out.println("第"+ (i+1) +"轮冒泡:" + Arrays.toString(arr)); } // System.out.println(Arrays.toString(arr)); String s = ""; for (int i=0;i<arr.length;i++){ s+=arr[i]; } System.out.println("移动后:" + s); } }