赞一个:
- package gaoxin;
- import java.util.Scanner;
- public class SpinRhombus {
- public static void main(String[] args) {
- // 定义一个输入流来录入键盘信息,由于每次只读一个字节,所以我就使用了scanner
- Scanner in = new Scanner(System.in);
- int num = 0;
- while ((num = in.nextInt()) != 0) {
- // 根据输入参数打印不同角度的菱形,直到输入0结束
- printRhombus(num);
- }
- //关闭流
- in.close();
- }
- public static void printRhombus(int num) {
- // 由于菱形任意旋转180度的倍数都是原图形,所以我定义了两种情况:1,原图形没旋转的 2,旋转了90度的
- // 当输入的数字是2的倍数时(即180度*n),都是原图形
- if (num % 2 == 0) {
- // 我用两个for循环来打印菱形,这是上半部分
- // 定义一开始时输出的内容space
- String space = " *";
- for (int x = 1; x < 5; x++) {
- System.out.println(space);
- // 每打印一次,都让space去掉前面的一个空格
- space = space.substring(1);
- // 再加上多出来的**
- space = space + "**";
- }
- // 下半部分
- // 由于以上的循环多打印了一个*,我把它去掉
- space = space.substring(1);
- for (int x = 1; x < 4; x++) {
- // 为了打印下半部分星星逐次递减的情况, 每次都把第一个*用空格替代
- space = space.replaceFirst("\\*", " ");
- // 再去掉末尾的一个*
- space = space.substring(0, space.length() - 1);
- // 打印一行
- System.out.println(space);
- }
- }
- // 旋转了90度的菱形,代码原理同上,只是星星间空隙变大
- else {
- String space = " *";
- for (int x = 1; x < 5; x++) {
- System.out.println(space);
- space = space.substring(2);
- space = space + " * *";
- }
- space = space.substring(2);
- for (int x = 1; x < 4; x++) {
- space = space.replaceFirst("\\*", " ");
- space = space.substring(0, space.length() - 2);
- System.out.println(space);
- }
- }
- }
- }
复制代码 |