免责声明:java基础资料均来自于韩顺平老师的《循序渐进学Java零基础》教案,具体视频内容可以去B站观看,这些资料仅用于学习交流,不得转载用于商业活动
1.循环控制
1.1 for循环
基本语法:
for(循环变量初始化;循环条件;循环变量迭代){
循环操作(可以多条语句);
}
说明:
- for关键字,表示循环控制
- for有四要素(1)循环变量初始化(2)循环条件(3)循环操作(4)循环变量迭代
- 如果循环操作只有一条语句,可以省略{},建议不要省略
循环执行流程分析
注意事项和细节说明:
- 循环条件是返回一个布尔值的表达式
- for(;循环判断条件;)钟的初始化和变量迭代可以写到其他地方,但是两边的分号不能省略
- 循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开
public class For01 { public static void main(String[] args) { int count=3; for(int i=0,j=0;i<count;i++,j+=2){ System.out.println("i="+i+",j="+j); /*输出 i=0,j=0 i=1,j=2 i=2,j=4 */ } } }
1.2 while循环
基本语法:
循环变量初始化;
while(循环条件){
循环体(语句);
循环变量迭代;
}
while循环也有四要素,只是四要素放的位置和for不一样
while循环执行流程分析
public class While01 { public static void main(String[] args) { //打印1-100之间所有能被3整除的数 int i=1; int endNum=100; while (i<=endNum){ if (i%3==0){ System.out.print(i+"\t"); } i++; } } }
1.3 do...while循环
基本语法:
循环变量初始化;
do{
循环体(语句);
循环变量迭代;
}while(循环条件);
说明:
- do...while也有循环四要素,只是位置不一样
- 先执行,再判断,也就是说,一定会至少执行一次
- 最后有一个分号;
do...while流程分析
1 public class DoWhile01 { 2 public static void main(String[] args) { 3 //统计1-200之间能被5整除但不能被3整除的数的个数 4 int i=1; 5 int endNum=200; 6 int count=0; 7 do{ 8 if(i%5==0 && i%3!=0){ 9 count++; 10 } 11 i++; 12 }while (i<=endNum); 13 System.out.println("1-200之间能被5整除但不能被3整除的数的个数:"+count); 14 } 15 }
1.4 多重循环(难点,重点)
1)将一个循环放在另一个循环体内,就形成了嵌套循环。其中for,while,do...while均可作为外层循环和内存循环
【建议一般使用两层,最多不要超过三层,否则,代码可读性很差】
2)实际上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环
才可以结束外层循环的当次循环,开始下一次的循环
3)设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次
for(int i=1;i<=7;i++){//第一层循环7 for(int j=1;j<=2;j++){//第二层循环2 System.out.println("您好...") //7*2=14 } }
例子
1 public class MulFor01 { 2 public static void main(String[] args) { 3 //统计3个班成绩情况,每个班有5名同学,求出各个班的平均分和所有班级的平均分【学生成绩从键盘输入】 4 //统计三个班及格人数,每个班有5名同学 5 Scanner sc = new Scanner(System.in); 6 double totalScore = 0;//所有班级学生的总分 7 int passNum = 0;//及格人数 8 int classNum = 3;//班级数 9 int studentNum = 5;//学生人数 10 for (int i = 1; i <= classNum; i++) {//表示班级 11 double sum = 0;//一个班级的总分 12 for (int j = 1; j <= studentNum; j++) {//表示学生 13 System.out.print("请输入第" + i + "个班的第" + j + "个学生的成绩:"); 14 double score = sc.nextDouble(); 15 if (score >= 60) { 16 passNum++; 17 } 18 sum += score; 19 } 20 System.out.println("第" + i + "个班的平均分:" + sum / studentNum); 21 totalScore += sum; 22 } 23 System.out.println("所有班级平均分:" + totalScore / (classNum * studentNum)); 24 System.out.println("及格人数:" + passNum); 25 } 26 }
1.4.1 练习一:打印99乘法表
1 public class MuFor02 { 2 public static void main(String[] args) { 3 //打印九九乘法表 4 int num=11; 5 for(int i=1;i<=num;i++){ 6 for(int j=1;j<=i;j++){ 7 System.out.print(j+"*"+i+"="+i*j+"\t"); 8 } 9 System.out.println(); 10 } 11 } 12 }
1.4.2 练习二:打印金字塔
1 public class MulFor03 { 2 public static void main(String[] args) { 3 /** 4 * * 4-3=1 5 * *** 4-2=2 6 * ***** 4-1=3 7 * ******* 4-0=4 8 */ 9 //打印等腰三角形 10 Scanner sc=new Scanner(System.in); 11 System.out.print("请输入要打印的三角形的行数:"); 12 int line=sc.nextInt(); 13 14 for (int i = 1; i <=line; i++) { 15 16 for (int j=1;j<=line-i;j++){ 17 System.out.print(" "); 18 } 19 for (int k=1;k<=2*i-1;k++){ 20 System.out.print("*"); 21 } 22 System.out.println(); 23 } 24 } 25 }
1.4.3 练习三:打印空心金字塔
1 public class MulFor03 { 2 public static void main(String[] args) { 3 /** 4 * * 4-3=1 5 * *** 4-2=2 6 * ***** 4-1=3 7 * ******* 4-0=4 8 */ 9 //打印等腰三角形 10 Scanner sc=new Scanner(System.in); 11 System.out.print("请输入要打印的三角形的行数:"); 12 int line=sc.nextInt(); 13 14 for (int i = 1; i <=line; i++) { 15 16 for (int j=1;j<=line-i;j++){ 17 System.out.print(" "); 18 } 19 for (int k=1;k<=2*i-1;k++){ 20 if(k==1||k==2*i-1 ||i==line) { 21 System.out.print("*"); 22 }else { 23 System.out.print(" "); 24 } 25 } 26 System.out.println(); 27 } 28 } 29 }
1.4.4 练习三:打印菱形
1 public class MutFor04 { 2 public static void main(String[] args) { 3 /** 4 * &&*&& 5 * &***& 6 * ***** ******* 7 * &***& &***** 1 2*2-1=3 8 * &&*&& &&*** 2 2*1-1=1 9 * &&&* 10 */ 11 //打印菱形 12 //打印等腰三角形 13 Scanner sc=new Scanner(System.in); 14 System.out.print("请输入要打印菱形的行数:"); 15 int line=sc.nextInt(); 16 17 for (int i = 1; i <=line/2+1; i++) { 18 19 for (int j=1;j<=(line/2+1)-i;j++){ 20 System.out.print(" "); 21 } 22 for (int k=1;k<=2*i-1;k++){ 23 System.out.print("*"); 24 } 25 System.out.println(); 26 } 27 for(int i=line/2;i>=1;i--){ 28 for (int k=1;k<=(line/2+1)-i;k++){ 29 System.out.print(" "); 30 } 31 for (int j=2*i-1;j>=1;j--){ 32 System.out.print("*"); 33 } 34 System.out.println(); 35 } 36 } 37 }
1.4.5 练习四:打印空心菱形
1 public class MutFor04 { 2 public static void main(String[] args) { 3 /** 4 * &&*&& 5 * &***& 6 * ***** ******* 7 * &***& &***** 1 2*2-1=3 8 * &&*&& &&*** 2 2*1-1=1 9 * &&&* 10 */ 11 //打印菱形 12 //打印等腰三角形 13 Scanner sc=new Scanner(System.in); 14 System.out.print("请输入要打印菱形的行数:"); 15 int line=sc.nextInt(); 16 17 for (int i = 1; i <=line/2+1; i++) { 18 19 for (int j=1;j<=(line/2+1)-i;j++){ 20 System.out.print(" "); 21 } 22 for (int k=1;k<=2*i-1;k++){ 23 if(k==1||k==2*i-1 ||i==line) { 24 System.out.print("*"); 25 }else { 26 System.out.print(" "); 27 } 28 } 29 System.out.println(); 30 } 31 for(int i=line/2;i>=1;i--){ 32 for (int k=1;k<=(line/2+1)-i;k++){ 33 System.out.print(" "); 34 } 35 for (int j=2*i-1;j>=1;j--){ 36 if(j==1||j==2*i-1 ||i==line) { 37 System.out.print("*"); 38 }else { 39 System.out.print(" "); 40 } 41 } 42 System.out.println(); 43 } 44 } 45 }
1.5 跳转控制语句
1.5.1 break
break语句用于终止某个语句块的执行,一般使用在switch或者循环钟
基本语法:
{
...
break;
...
}
以while使用break为例,画出示意图
public class BreakDemo { public static void main(String[] args) { //1-100以内的数求和,求出当和第一次大于20的当前数 int endNum=100; int sum=0;//累加和 for(int i=1;i<=endNum;i++){ sum+=i; if(sum>20){ System.out.println("和第一次大于20的当前数:"+i);//6 break; } } } }
标签的使用:
public class Break02 { public static void main(String[] args) { //标签的使用 lable1: for(int j=1;j<=5;j++){ lable2: for (int i = 0; i < 10; i++) { if(i==2){ break lable1; } System.out.println("i="+i); } } } }
注意事项和细节说明:
- break语句出现在多层嵌套的语句块钟时,可以通过标签知名要终止的是哪一层语句块
- break语句可以指定退出哪层
- lable1是标签,名字由程序员指定
- break后指定到哪个label就退出到哪里
- 实际开发中尽量不要使用标签
- 如果没有指定标签,就默认退出最近的循环体
1.5.2 continue
1)continue语句用于结束本次循环,继续执行下一次循环
2)continue语句出现在多层嵌套循环语句体中时,可以通过标签指明要跳过的是哪一层循环,这个和前面的标签的使用规则是一样的
基本语法:
{
...
continue;
...
}
以while使用continue为例,画出示意图
1 public class Continue01 { 2 public static void main(String[] args) { 3 label1: 4 for(int j=0;j<3;j++){ 5 label2: 6 for(int i=0;i<10;i++){ 7 if (i==3){ 8 //continue; 9 //continue label2; 10 continue label1; 11 } 12 System.out.println("i="+i); 13 } 14 } 15 } 16 }
1.5.3 return
return使用在方法,表示跳出所在的方法,在讲解方法的时候,会详细介绍,这里简单的提以下
如果return写在main方法,退出程序Return01.java
1 public class Return01 { 2 public static void main(String[] args) { 3 for (int i = 1; i <=5 ; i++) { 4 if(i==3){ 5 System.out.println("您好呀"+i); 6 return; 7 } 8 System.out.println("i="+i); 9 } 10 System.out.println("go on..."); 11 } 12 }标签:控制,Java,int,流程,System,while,循环,main,public From: https://www.cnblogs.com/lgs-tech/p/17890734.html