JAVA 输出任意奇数的菱形

常用的输出方法为2个等腰三角形叠起来,但是那样循环太多,很容易把人绕昏!

package zuoye;

import java.util.Scanner;

public class Diamond {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("请输入要打印行数:");
		int line = 0;

		line = input.nextInt();

		if (line % 2 == 0 || line == 1) {
			System.out.print("输入错误,只能为奇数");
		}else{
			int middle = (line + 1) / 2; 				// 求出中间行号
			int	k = 0;      							// k用于判断是输出上部的位置还是输出下部的位置

			for (int i = 0 ; i < line; i++) { 			// 控制需要输出的行数,取值于 Scanner
				
				if (i < middle) {						// 如果当前行小于中间行,那么赋值k为上部符号和空格的输出
					k++; 								// 上面的三角形的行号(包括中间那行)
				} else {
					k--; 								// 下面的三角形的行号(不包括中间那行)
				}
				
				for (int j = 0; j < middle + k; j++) { 				// 每行打印的空格和星星总数为:j   middle + k = j  也就是总行数
					System.out.print(j > middle - k ? "O" : " "); 	// middle-k的那个格子打印空格,后面的格子打印O
				}
				System.out.println();
			}
		}
		input.close();   // 关闭输入
	}
}

There are no comment yet.

HTML tag cannot be used in this comment.