刚写的一个打印菱形的程序,利用二维数组来存储,仅提供参考,应该还有更好的方法!
[Java] 纯文本查看 复制代码 import java.util.Scanner;
/*
* 打印菱形的程序
*/
public class Diamond {
//定义静态成员变量用于接收用户输入行数
private static int line;
public static void main(String[] args) {
while(true){
Scanner sc = new Scanner(System.in);
System.out.println("请输入要打印菱形的行数,必须为奇数:");
String input = sc.nextLine();
//如果输入为quit结束该程序
if("quit".equals(input))
break;
//如果输入为数字,转成int类型的整数
else{
line = Integer.parseInt(input);
}
//假如输入为偶数,重新输入,直到为奇数才执行后面初始化和打印语句
if(line % 2 == 0){
System.out.println("输入错误,请重新输入!!");
continue;
}
//定义一个二维数组来存储形状,类似一个二维的地图
String[][] strs = new String[line][line];
//将二维数组元素全部赋值为" "
initMap(strs);
//在二维数组中存储菱形的图案
initDiamond(strs);
//遍历二维数组,打印菱形图案
print(strs);
}
}
public static void initMap(String[][] strs){
for (int i = 0; i < strs.length; i++) {
for (int j = 0; j < strs[i].length; j++) {
strs[i][j] = " ";
}
}
}
public static void print(String[][] strs){
for (int i = 0; i < strs.length; i++) {
for (int j = 0; j < strs[i].length; j++) {
System.out.print(strs[i][j]);
}
System.out.println();
}
}
public static void initDiamond(String[][] strs){
for (int i = 0; i < strs.length; i++) {
int a = line >> 1;
int k = 0;
if(i > a){
k = line -i - 1;
for(int j = a - k; j < a + k + 1; j++){
strs[i][j] = "*";
}
}else{
for(int j = a - i; j < a + i + 1; j++){
strs[i][j] = "*";
}
}
}
}
} |