多重循环指一个循环语句的循环体中再包含循环语句,又称嵌套循环。循环语句内可以嵌套多层循环。同时,不同的循环语句可以相互嵌套。
多重循环语句的语法格式如下:
while(循环条件1){
循环条件1
for(循环条件2){
循环语句2
}
}
这是while语句和for语句嵌套的例子。其中while循环称为外层循环,for循环称为内层循环,因为是两层循环,所以称为二重循环。
该二重循环的执行过程是。外层while循环每循环一次,内层for循环就从头到尾完整的执行一遍。
1、语法格式的不同:
(1)while循环语句语法格式如下:
变量初始化
while(循环条件){
循环体
}
(2)do-while循环语句语法格式如下:
变量初始化
do{
循环体
}while(循环条件);
(3)for循环语句语法格式如下:
for(变量初始化;循环条件;修改循环变量){
循环体
}
2、执行顺序不同
(1)while循环:先判断循环条件,再执行循环体。如果条件不成立,退出循环。
(2)do-while循环:先执行循环体,再判断循环条件,循环体至少执行一次。
(3)for循环:先执行变量初始化部分,再判断循环条件,然后执行循环体,最后进行变量的计算。如果条件不成立,跳出循环。
3、适应情况不同
在解决问题时,对于循环次数确定的情况,通常选用for循环,对于次数不确定的情况,通常选用while循环和do-while循环。
1、矩形
内联代码片
。
public class Demo0 {
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();
}
public class Demo0 {
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();
}
public class Demo0 {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 4 - i; j++) {
System.out.print(" ");
}
for (int j = 0; j < 5; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
public class Demo0 {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 4 - i; j++) {
System.out.print(" ");
}
for (int j = 0; j < 5; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
3、直角三角形
(1)直角在左下的直角三角形
下面展示一些 内联代码片
。
public class Demo2 {
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();
}
}
}
public class Demo2 {
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();
}
}
}
public class Demo2 {
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();
}
}
}
public class Demo2 {
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();
}
}
}
public class Demo2 {
public static void main(String[] args) {
//直角在右下的直角三角形
for(int i=0;i<5;i++) {
for (int j = 0; j < 4 - i; j++) {
System.out.print(" ");
}
for (int j = 0; j <= i; j++) {
System.out.print("*");
}System.out.println();
}
}
}
public class Demo2 {
public static void main(String[] args) {
//直角在右下的直角三角形
for(int i=0;i<5;i++) {
for (int j = 0; j < 4 - i; j++) {
System.out.print(" ");
}
for (int j = 0; j <= i; j++) {
System.out.print("*");
}System.out.println();
}
}
}
public class Demo2 {
public static void main(String[] args) {
//直角在右上的三角形
for (int i = 0; i < 5; i++) {
for (int j = 0; j <=i-1; j++) {
System.out.print(" ");
}
for (int j = 0; j < 5 - i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
public class Demo2 {
public static void main(String[] args) {
//直角在右上的三角形
for (int i = 0; i < 5; i++) {
for (int j = 0; j <=i-1; j++) {
System.out.print(" ");
}
for (int j = 0; j < 5 - i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
(5)菱形(一个正的等腰三角形和一个反的等腰三角形)
下面展示一些 内联代码片
。
public class Demo3 {
public static void main(String[] args) {
//1、正等腰三角形
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 4- i; j++) {
System.out.print(" ");
}
for (int j = 0; j <2*i+1; j++) {
System.out.print("*");
}
System.out.println();
}
//2.倒等腰三角形
for(int i=0;i<4;i++){
for(int j=0;j<=i;j++){
System.out.print(" ");
}for(int j=0;j<7-2*i;j++){
System.out.print("*");
}
System.out.println();
}
}}
public class Demo3 {
public static void main(String[] args) {
//1、正等腰三角形
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 4- i; j++) {
System.out.print(" ");
}
for (int j = 0; j <2*i+1; j++) {
System.out.print("*");
}
System.out.println();
}
//2.倒等腰三角形
for(int i=0;i<4;i++){
for(int j=0;j<=i;j++){
System.out.print(" ");
}for(int j=0;j<7-2*i;j++){
System.out.print("*");
}
System.out.println();
}
}}
总结:(1)外层循环控制打印行数,内层循环控制一行内打印的列。
(2)各循环可相互嵌套。
(3)外层循环一次,内层循环一遍。
(4)一般不超过三层 127(超过的话,循环就成几何倍的增长)。
Java语言支持3种类型的跳转语句:break语句、continue语句和return语句。使用这些语句,可以把控制转移到循环甚至程序的其他部分。
1、break语句
(1)break语句在循环中的作用是终止当前循环,然后执行是当前循环后面的循环。
(2)在switch语句中的作用是终止switch。
(3)brake语句只会出现在switch和循环语句中,没有其他使用场合。
下面展示一些 内联代码片
。
public class Demo5 {
public static void main(String[] args) {
//有1020个西瓜,第一天卖掉总数的一半后又多卖出两个,
//以后每天卖剩下的一半多两个,问几天以后能卖完?
int num=1020;
int day=0;
while (num>=0){
if(num==0){
//瓜卖完了
break;
}
num=num/2-2;
day++;
System.out.println("经过"+day+"天,瓜还剩"+num+"个。");
}
System.out.println("经过"+day+"天,瓜卖完了。");
}
}
public class Demo5 {
public static void main(String[] args) {
//有1020个西瓜,第一天卖掉总数的一半后又多卖出两个,
//以后每天卖剩下的一半多两个,问几天以后能卖完?
int num=1020;
int day=0;
while (num>=0){
if(num==0){
//瓜卖完了
break;
}
num=num/2-2;
day++;
System.out.println("经过"+day+"天,瓜还剩"+num+"个。");
}
System.out.println("经过"+day+"天,瓜卖完了。");
}
}
2、continue语句
(1)continue语句的作用是强制循提前返回,也就是让循环跳出本次循环中的剩余代码,然后下一次循环。
(2)在while和do-while循环中,continue执行完毕后,程序将直接判断循环条件,如果为true,则继续下一次循环;否则,终止循环。而在for循环中,continue使程序先跳转到循环变量计算部分,然后再判断循环条件。
(3)continue语句只会出现在循环语句中,它只会有这一种使用场合。
下面展示一些 内联代码片
。
public class Demo6 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int count=0;
for(int i=1;i<=5;i++){
System.out.println("请输入第"+i+"门课的成绩:");
double score=sc.nextDouble();
if(score<80){
continue;
}count++;
}
System.out.println("一同"+count+"门课的大于等于80分");
System.out.println("比例为:"+count/5.0*100+"%");
}
}
public class Demo6 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int count=0;
for(int i=1;i<=5;i++){
System.out.println("请输入第"+i+"门课的成绩:");
double score=sc.nextDouble();
if(score<80){
continue;
}count++;
}
System.out.println("一同"+count+"门课的大于等于80分");
System.out.println("比例为:"+count/5.0*100+"%");
}
}
3、return语句
return语句的作用是结束当前方法的执行并退出返回到调用该方法的语句处。
下面展示一些 内联代码片
。
public class Demo7 {
public static void main(String[] args) {
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
switch(j){
case 2:
case 3:
case 4:
return;//退出整个方法
//System.exit(-1);//中断程序的运行
}
System.out.print("*");
}
System.out.println();
}
}
}
public class Demo7 {
public static void main(String[] args) {
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
switch(j){
case 2:
case 3:
case 4:
return;//退出整个方法
//System.exit(-1);//中断程序的运行
}
System.out.print("*");
}
System.out.println();
}
}
}