Java程序打印给定整数的方形图案

1、需求分析

本文将讲述如何使用Java语言写出打印给定整数的方形图案的程序。具体要求是用户输入一个整数num,程序将会打印num行num列的图案,其中第一行和最后一行,第一列和最后一列都是“*”,其余位置是“+”。

2、代码实现

2.1 主函数

主函数主要是负责获取用户输入的num,并且调用打印图案的方法printPattern:

import java.util.Scanner;

public class PrintPattern {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.print("Please input a number: ");

int num = sc.nextInt();

printPattern(num);

}

}

2.2 打印图案方法

打印图案方法printPattern根据用户输入的num,逐行逐列打印图案,并将第一行和最后一行,第一列和最后一列的位置设置为“*”:

public static void printPattern(int num) {

for (int i = 1; i <= num; i++) {

for (int j = 1; j <= num; j++) {

if (i == 1 || i == num || j == 1 || j == num) {

System.out.print("*");

} else {

System.out.print("+");

}

}

System.out.println();

}

}

3、运行结果

下面是一个输入为5的运行结果:

Please input a number: 5

*****

*+++*

*+++*

*+++*

*****

4、代码优化

以上代码虽然可以正确地实现需求,但是可以通过优化代码结构和算法来提升程序性能和效率。

4.1 变量命名

变量命名应该使用有意义的英文单词,并符合命名规范:

num → rowCount

i → row

j → column

4.2 引入变量

将第一行和最后一行的位置用变量保存,在循环中直接判断row是否等于topRow或者bottomRow,取代原来的i == 1 和 i == num 的判断:

public static void printPattern(int rowCount) {

int topRow = 1;

int bottomRow = rowCount;

for (int row = 1; row <= rowCount; row++) {

for (int column = 1; column <= rowCount; column++) {

boolean isEdge = row == topRow || row == bottomRow || column == topRow || column == bottomRow;

System.out.print(isEdge ? "*" : "+");

}

System.out.println();

}

}

4.3 空间换时间

遍历的时候,除了边缘处要打印“*”,其他位置都要打印“+”,可以通过逻辑推导出:如果“*”的位置是(row, column),且row、column均为偶数,则不需要打印“*”。

public static void printPattern(int rowCount) {

int topRow = 1;

int bottomRow = rowCount;

for (int row = 1; row <= rowCount; row++) {

for (int column = 1; column <= rowCount; column++) {

boolean isEvenRow = row % 2 == 0;

boolean isEvenColumn = column % 2 == 0;

boolean isEdge = row == topRow || row == bottomRow || column == topRow || column == bottomRow;

System.out.print(isEdge || (isEvenRow && isEvenColumn) ? "*" : "+");

}

System.out.println();

}

}

5、总结

本文讲述了如何使用Java语言编写打印方形图案的程序。通过本文的讲解,可以学到Java中Scanner的使用、方法的调用和参数传递、循环控制语句的使用等内容。同时,通过代码的优化,也能学到如何合理利用计算机资源,提高程序性能和效率。

后端开发标签