问题:使用循环几年了,被人问到有什么区别时,竟然有点语塞,温故一下大神的理解,整理一下。
总结:for、while和do while用任一循环能完成的功能,其他两个循环也可以完成,只是有时会复杂一点,像while或for循环向do while转换有时需要加一个判断(像倒三角的例子),因为do while最少要执行一次。互相转换时一定要需要注意数据的还原等问题,互相转换只是练习自己对各个循环的掌握情况。在正式使用时需要根据情况分析使用哪个比较方便。
例子:三种循环做9*9乘法表和打印倒三角形
1 //for 循环写 9*9乘法表 2 for(int x=1;x<10;x++){ 3 for(int y=1;y<=x;y++){ 4 System.out.print(y + "*" + x + "=" + x*y + " "); 5 } 6 System.out.println(); 7 } 8 9 10 //while 循环写 9*9乘法表 11 int i = 1; 12 int j = 1; 13 while(i<10){ 14 j=1; 15 while(j<=i){ 16 System.out.print(j + "*" + i + "=" + i*j + " "); 17 j++; 18 } 19 System.out.println(); 20 i++; 21 } 22 23 24 //do while循环写9*9乘法表 25 int i = 1; 26 int j = 1; 27 do{ 28 j=1; 29 do{ 30 System.out.print(j + "*" + i + "=" + i*j + " "); 31 j++; 32 }while(j<=i); 33 System.out.println(); 34 i++; 35 }while(i<10); 36 37 38 // for 倒三角形 39 for(int i = 5;i>0;i--){ 40 for(int j=5-i;j>0;j--){ 41 System.out.print(" "); 42 } 43 for(int k=2*i-1;k>0;k--){ 44 System.out.print("*"); 45 } 46 System.out.println(); 47 } 48 49 50 51 // do while 倒三角形 52 int i = 4; 53 int j = 0; 54 do{ 55 int z = 4-i; 56 do{ 57 if(z>0) 58 System.out.print(" "); 59 z--; 60 }while(z>0); 61 j = 2*i+1; 62 do{ 63 System.out.print("*"); 64 j--; 65 }while(j>0); 66 System.out.println(); 67 i--; 68 }while(i>=0); 69 70 71 72 //while 倒三角形 73 int i = 4; 74 int j = 0; 75 while(i>=0){ 76 int z = 4-i; 77 while(z>0){ 78 System.out.print(" "); 79 z--; 80 } 81 j = 2*i+1; 82 while(j>0){ 83 System.out.print("*"); 84 j--; 85 } 86 System.out.println(); 87 i--; 88 }