练习一:
输出:
******
******
*******
package zzx.com;
import java.util.Scanner;
public class yyds {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
for(int i = 1;i <= 3;i++){
for(int j = 1;j <=6;j++){
System.out.print('*');
}
System.out.println();
}
}
}
解析:
①外层循环的意义:让内层循环进行多少次循环
②内层循环的循环体全部执行后,外层循环才进行了一次
③技巧:外层循环控制行,内层循环控制列
练习二:
输出:
***
**
*
package zzx.com;
import java.util.Scanner;
public class yyds {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
for(int i = 1;i <= 3;i++){
for(int j = 1;j <= 4 - i;j++){
System.out.print('*');
}
System.out.println();
}
}
}
解析:

回顾:
①在嵌套循环中,j的范围由i决定
②要得出j的范围,就要根据要求的输出的内容寻找j与i的关系
练习三:
按要求输出:

package zzx.com;
import java.util.Scanner;
public class yyds {
public static void main(String[] args){
for(int i = 1;i <= 5;i++){
for(int j = 1;j <= i;j++)
System.out.print('*');
System.out.println();
}
for(int i = 1;i <= 4;i++){
for(int j = 1;j <= 5 - i;j++)
System.out.print('*');
System.out.println();
}
}
}
回顾:
①如果要求输出的结果有明显的分界线,上下区域没有任何联系,考虑两个嵌套循环
练习四:
100以内所有质数的输出
①方法一
package zzx.com;
import java.util.Scanner;
public class yyds {
public static void main(String[] args){
boolean x = true;
for(int i = 2;i <= 100;i++){
for(int j = 2;j < i;j++){
if(i % j == 0){
x = false;
break;
}
}
if(x == true)
System.out.println(i);
x = true;//重置x的值
}
}
}
②方法二
package zzx.com;
import java.util.Scanner;
public class yyds {
public static void main(String[] args){
for(int i = 2;i <= 100;i++){
boolean x = true;
for(int j = 2;j < i;j++){
if(i % j == 0){
x = false;
break;
}
}
if(x == true)
System.out.println(i);
}
}
}
③方法三
package zzx.com;
import java.util.Scanner;
public class yyds {
public static void main(String[] args) {
//long end = System.currentTimeMillis();获取当前时间距离1970-01-01 00:00:00的毫秒数
for (int i = 2; i <= 100; i++) {
boolean x = true;
for (int j = 2; j < (int) (Math.sqrt(i)); j++) {//对本身为质数的自然数有效
if (i % j == 0) {
x = false;
break;//只对本身非质数的自然数有效,减少了一部分运行时间
}
}
if (x == true)
System.out.println(i);
}
//long end = System.currentTimeMillis();获取当前时间距离1970-01-01 00:00:00的毫秒数
//System.out.println("所花费的时间为:" + (end - start));获取程序运行所花费的毫秒数
}
}
④方法四
package zzx.com;
import java.util.Scanner;
public class yyds {
public static void main(String[] args){
label:for(int i = 2;i <= 100;i++){
for(int j = 2;j < (int) (Math.sqrt(i));j++){
if(i % j == 0)
continue label;
}
System.out.println(i);
}
}
}
解析:

回顾:
①当for循环进行次数很多时,考虑优化数据范围
② long x = System.currentTimeMillis();可以计算程序运行的时间,进行效率比较