嵌套循环:循环中还可以声明循环。相当于内层循环的整体充当外层循环的循环体
1.首先来实现一个比较简单的,在控制台打印一个长方形:
/**
* 测试打印长方形
* @author cui_yonghua
*/
public class PintPic {
public static void main(String[] args) {
for(int j = 0;j < 4;j++){//外层循环控制行数
for(int i = 0;i < 5;i++){//内层循环控制列数
System.out.print("*");
}
System.out.println();
}
}
}
控制台输出如下:
2.下面再看打印三角形:
/**
* 测试打印三角行
* @author cui_yonghua
*/
public class PintPic {
public static void main(String[] args) {
for(int j = 0;j < 4;j++){//外层循环控制行数
for(int i = 0;i < j + 1;i++){//每行输出j + 1个
System.out.print("*");
}
System.out.println();
}
}
}
控制台输出如下:
3.打印如图所示:
/**
* 测试打印图形
* @author cui_yonghua
*/
public class PintPic {
public static void main(String[] args) {
for(int j = 0;j < 4;j++){//外层循环控制行数
for(int i = 0;i < j + 1;i++){//每行输出j + 1个
System.out.print("*");
}
System.out.println();
}
for(int i = 0; i < 5;i++){
for(int j = 0;j < 5-i;j++){//for(int j = i;j < 5;j++)
System.out.print("*");
}
System.out.println();
}
}
}
控制台输出如下:
4.打印如图所示:
可以理解为
/**
* 测试打印图形
* @author cui_yonghua
*/
public class PintPic {
public static void main(String[] args) {
for(int i = 0;i < 5;i++){
for(int k = 0;k < 4 - i;k++){
System.out.print(" ");
}
for(int j = 0;j < i + 1;j++){
System.out.print("* ");
}
System.out.println();
}
}
}
控制台输出如下:
5.再看打印菱形,如图所示:
/**
* 测试打印菱形
* @author cui_yonghua
*/
public class PintPic {
public static void main(String[] args) {
for(int i = 0;i < 5;i++){
for(int k = 0;k < 4 - i;k++){
System.out.print(" ");
}
for(int j = 0;j < i + 1;j++){
System.out.print("* ");
}
System.out.println();
}
//下半部分
for(int i = 0;i < 4;i++){
for(int k = 0;k < i + 1;k++){
System.out.print(" ");
}
for(int j = 0;j < 4 - i;j++){
System.out.print("* ");
}
System.out.println();
}
}
}
控制台输出如下:
6.那么,打印数字菱形该怎么做呢,代码如下:
/**
* 测试打印图形
* @author cui_yonghua
*/
public class PintPic {
public static void main(String[] args) {
for(int i=1;i<=5;i++){
for(int j=1;j<=5-i;j++){
System.out.print(" ");
}
for(int j=1;j<=2*i-1;j++){
System.out.print(i);
}
System.out.println();
}
for(int i=1;i<=4;i++){
for(int j=1;j<=i;j++){
System.out.print(" ");
}
for(int j=1;j<=2*(5-i)-1;j++){
System.out.print(5-i);
}
System.out.println();
}
}
}
控制台输出如下:
7.若打印空心菱形,代码如下:
/**
* 测试打印空心菱形
* @author cui_yonghua
*/
public class PintPic {
public static void main(String[] args) {
for(int i=1;i<=5;i++){
for(int j=1;j<=5-i;j++){
System.out.print(" ");
}
for(int j=1;j<=2*i-1;j++){
if(j==1||j==2*i-1){
System.out.print("*");//上半截
}
else{
System.out.print(" ");
}
}
System.out.println();
}
for(int i=1;i<=4;i++){
for(int j=1;j<=i;j++){
System.out.print(" ");
}
for(int j=1;j<=2*(5-i)-1;j++){
if(j==1||j==2*(5-i)-1){
System.out.print("*");
}
else{
System.out.print(" ");
}
}
System.out.println();
}
}
}
控制台输出如下:
若根据用户输入的数字来打印菱形的行数,代码实现如下:
import java.util.Scanner;
/**
* 使用for循环输出空心的菱形
*/
public class Example {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入菱形的行数:");
int i = scanner.nextInt();
printHollowRhombus(i);
}
public static void printHollowRhombus(int size) {
if (size % 2 == 0) {
size++;// 计算菱形大小
}
for (int i = 0; i < size / 2 + 1; i++) {
for (int j = size / 2 + 1; j > i + 1; j--) {
System.out.print(" ");// 输出左上角位置的空白
}
for (int j = 0; j < 2 * i + 1; j++) {
if (j == 0 || j == 2 * i) {
System.out.print("* ");// 输出菱形上半部边缘
} else {
System.out.print(" ");// 输出菱形上半部空心
}
}
System.out.println(""); //换行
}
for (int i = size / 2 + 1; i < size; i++) {
for (int j = 0; j < i - size / 2; j++) {
System.out.print(" ");// 输出菱形左下角空白
}
for (int j = 0; j < 2 * size - 1 - 2 * i; j++) {
if (j == 0 || j == 2 * (size - i - 1)) {
System.out.print("* ");// 输出菱形下半部边缘
} else {
System.out.print(" ");// 输出菱形下半部空心
}
}
System.out.println(""); //换行
}
}
}
执行结果如下图所示:
8.打印平行四边形:
/**
* 测试打印平行四边形
* @author cui_yonghua
*/
public class PintPic {
public static void main(String[] args) {
for(int i=0;i<=5;i++){
for(int j=1;j<=5-i;j++){
System.out.print(" ");
}
for(int j=1;j<=5;j++){
System.out.print("*");
}
System.out.println();
}
}
}
控制台输出如下:
9.若随意输出一个n,输出打印n行,代码如下:
import java.util.Scanner;
/**
* 测试打印图形
* @author cui_yonghua
*/
public class PintPic {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i = 1; i<=n; i++){
//输出n-i个空格
for(int j = 1; j<=n-i; j++){
System.out.print(" ");
}
//输出2*i-1个星
for(int j = 1; j<=2*i-1; j++){
System.out.print("*");
}
//换行
System.out.println();
}
}
}
比如,随便输入一个数字6,效果如图:
有不到的地方欢迎大家评论指正,交流。或者加我的微信号:moyan_00008888