java的多重循环对于初学者来说是容易让人懵圈的,像多重循环的问题,都应该有一个比较清晰的逻辑思维,下面就以金字塔问题为例。
一、多重循环控制介绍
将一个循环体放在另一个循环体内,就形成了嵌套循环。其中,for,while,do..while均可以作为外层嵌套循环和内层循环。实质上,嵌套循环就是把内层循环当成外层循环的循环体。只有当内层循环的结果为false时,才会跳出内层循环,才可以结束外层的当前循环,开始下一轮的循环。假设外层循环次数为m次,内层循环次数为n次,则内层循环体实际上需要执行m*n次。
二、金字塔
1.代码
import java.util.Scanner;
public class Stars{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("输入你想要的金字塔层数: ");
int totalLevel = scanner.nextInt();
for (int i=1;i<=totalLevel;i++){ //i表示空心菱形上半部分行数;类似于金字塔行数
for (int k=1;k<=totalLevel-i;k++) {//k表示每行"*"号前面的空格数
System.out.print(" ");
}
for (int j=1;j<=2*i-1;j++){ //j表示每行要打印的"*"号
System.out.print("*");
}
System.out.print("");
}
}
}
2.运行结果
三、空心金字塔
1.代码
import java.util.Scanner;
public class Stars{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("输入你想要的金字塔层数: ");
int totalLevel = scanner.nextInt();
for (int i = 1;i<=totalLevel ;i++ ) {//i表示空心菱形上半部分行数;类似于金字塔行数
for (int k=1;k<=totalLevel-i ;k++ ) {//k表示每行"*"号前面的空格数
System.out.print(" ");
}
for (int j = 1 ;j<=2*i-1 ;j++ ) {//j表示每行要打印的"*"号
//当前行的第一个位置和最后一个位置都是*,最后一层全是*
if (j==1 || j==2*i-1 || i == totalLevel ) {
System.out.print("*");
}else {
System.out.print(" ");
}
}
System.out.println("");
}
}
}
2.运行结果
附:四、空心菱形
1.代码
import java.util.Scanner;
public class Stars{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("输入你想要的金字塔层数: ");
int totalLevel = scanner.nextInt();
for (int i = 1;i<=totalLevel ;i++ ) {//i表示空心菱形上半部分行数;类似于金字塔行数
for (int k=1;k<=totalLevel-i ;k++ ) {//k表示每行"*"号前面的空格数
System.out.print(" ");
}
for (int j = 1 ;j<=2*i-1 ;j++ ) {//j表示每行要打印的"*"号
//当前行的第一个位置和最后一个位置都是*,最后一层全是*
if (j==1 || j==2*i-1) {
System.out.print("*");
}else {
System.out.print(" ");
}
}
System.out.println("");
}
for(int i=1;i<=totalLevel-1;i++){//空心菱形下半部分的行数为totalLevel-1行;比如上半部分4行,则下半部分为3行才能构成菱形
for(int k=1;k<=i;k++){
System.out.print(" ");
}
for (int j=1;j<=2*(totalLevel-i) ;j++ ) {//下半部分每行总的"*"数
if (j==1||j==2*(totalLevel-i)-1) //如果"*"处在第一和最后一位则打印出来
{
System.out.print("*");
}else
System.out.print(" "); //如果"*"不是处在第一和最后一位则打印出空格
}
System.out.println();
}
}
}
2.运行结果
注意事项:多重循环控制一般使用两层,最多不超过三层,否则代码可读性变差。