A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王震阳老师   /  2014-7-4 16:55  /  18433 人查看  /  283 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

回帖领题
回复 使用道具 举报

Demo3.rar (732 Bytes, 下载次数: 1)

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报

很好:
  1. import java.util.Scanner;


  2. public class Demo3 {

  3.         /**
  4. * 打印如下图案:要求,通过输入不同的参数(比如1、2、3、4...N)该图案可以90°*N的倍数进行顺时针旋转。不需要图形化界面,在控制台中输出即可。注意:图中的“I”为占位符,真实的图形不应该有此符号。
  5.      *
  6.     ***
  7.    *****
  8.   *******
  9. *********
  10. ***********
  11. *********
  12.   *******
  13.    *****
  14.     ***
  15.      *
  16. */
  17.         public static void main(String[] args) {
  18.                 // TODO Auto-generated method stub
  19.           int n=3;
  20.           Scanner sc=new Scanner(System.in);
  21.           int l=sc.nextInt();
  22.           int k=l%4;
  23.           switch(k){
  24.           case 1:
  25.                   show1(n);
  26.                   break;
  27.           case 2:
  28.                   show2(n);
  29.                   break;
  30.           case 3:
  31.                   show1(n);
  32.                   break;
  33.           case 0:
  34.                   show2(n);
  35.                   break;
  36.           }
  37.         }       
  38.         public static void show1(int n){
  39.                 for(int i = 0; i < n - 1; i++)  
  40.         {  
  41.             for(int x = i + 1; x < n; x++)  
  42.             {  
  43.                 System.out.print(" ");  
  44.             }  
  45.             for(int y = 0; y < (i + 1) * 2 - 1; y++)  
  46.             {  
  47.                 System.out.print("*");  
  48.             }  
  49.             System.out.println();  
  50.         }  
  51.         for(int i = 0; i < n; i++)  
  52.         {  
  53.             for(int x = 0; x < i; x++)  
  54.             {  
  55.                 System.out.print(" ");  
  56.             }  
  57.             for(int y = i; y < 2 * n - i - 1; y++)  
  58.             {  
  59.                 System.out.print("*");  
  60.             }  
  61.             System.out.println();  
  62.         }  
  63.    }
  64.         public static void show2(int n){
  65.                 for(int i = 0; i < n - 1; i++)  
  66.         {  
  67.             for(int x = i + 1; x < n; x++)  
  68.             {  
  69.                 System.out.print("   ");  
  70.             }  
  71.             for(int y = 0; y < (i + 1) * 2 - 1; y++)  
  72.             {  
  73.                 System.out.print(" * ");  
  74.             }  
  75.             System.out.println();  
  76.         }  
  77.         for(int i = 0; i < n; i++)  
  78.         {  
  79.             for(int x = 0; x < i; x++)  
  80.             {  
  81.                 System.out.print("   ");  
  82.             }  
  83.             for(int y = i; y < 2 * n - i - 1; y++)  
  84.             {  
  85.                 System.out.print(" * ");  
  86.             }  
  87.             System.out.println();  
  88.         }  
  89.         }
  90.        
  91. }

复制代码
回复 使用道具 举报
我做出来了,不过因为控制台的行距是固定的,无法体现旋转后菱形变扁的情况。
我还有一个问题,就是在用replacefirst和split函数时,为什么参数中的“.”和“*”都要用两个转义字符:“\\.”“\\*”?

捕获.PNG (95.95 KB, 下载次数: 21)

捕获.PNG

SpinRhombus.rar

953 Bytes, 下载次数: 50

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
风祭将o 发表于 2014-12-24 13:27
我做出来了,不过因为控制台的行距是固定的,无法体现旋转后菱形变扁的情况。
我还有一个问题,就是在用rep ...

赞一个:
  1. package gaoxin;

  2. import java.util.Scanner;

  3. public class SpinRhombus {

  4.         public static void main(String[] args) {
  5.                 // 定义一个输入流来录入键盘信息,由于每次只读一个字节,所以我就使用了scanner
  6.                 Scanner in = new Scanner(System.in);
  7.                 int num = 0;
  8.                 while ((num = in.nextInt()) != 0) {
  9.                         // 根据输入参数打印不同角度的菱形,直到输入0结束
  10.                         printRhombus(num);
  11.                 }
  12.                 //关闭流
  13.                 in.close();
  14.         }

  15.         public static void printRhombus(int num) {
  16.                 // 由于菱形任意旋转180度的倍数都是原图形,所以我定义了两种情况:1,原图形没旋转的 2,旋转了90度的
  17.                 // 当输入的数字是2的倍数时(即180度*n),都是原图形
  18.                 if (num % 2 == 0) {
  19.                         // 我用两个for循环来打印菱形,这是上半部分
  20.                         // 定义一开始时输出的内容space
  21.                         String space = "   *";
  22.                         for (int x = 1; x < 5; x++) {
  23.                                 System.out.println(space);
  24.                                 // 每打印一次,都让space去掉前面的一个空格
  25.                                 space = space.substring(1);
  26.                                 // 再加上多出来的**
  27.                                 space = space + "**";
  28.                         }
  29.                         // 下半部分
  30.                         // 由于以上的循环多打印了一个*,我把它去掉
  31.                         space = space.substring(1);
  32.                         for (int x = 1; x < 4; x++) {
  33.                                 // 为了打印下半部分星星逐次递减的情况, 每次都把第一个*用空格替代
  34.                                 space = space.replaceFirst("\\*", " ");
  35.                                 // 再去掉末尾的一个*
  36.                                 space = space.substring(0, space.length() - 1);
  37.                                 // 打印一行
  38.                                 System.out.println(space);
  39.                         }
  40.                 }

  41.                 // 旋转了90度的菱形,代码原理同上,只是星星间空隙变大
  42.                 else {
  43.                         String space = "       *";
  44.                         for (int x = 1; x < 5; x++) {
  45.                                 System.out.println(space);
  46.                                 space = space.substring(2);
  47.                                 space = space + " * *";
  48.                         }
  49.                         space = space.substring(2);
  50.                         for (int x = 1; x < 4; x++) {
  51.                                 space = space.replaceFirst("\\*", " ");
  52.                                 space = space.substring(0, space.length() - 2);
  53.                                 System.out.println(space);
  54.                         }
  55.                 }

  56.         }
  57. }
复制代码
回复 使用道具 举报
这是第三道题,领完回去做
回复 使用道具 举报
taany 中级黑马 2014-12-26 18:55:55
227#
老规矩,回帖领题啦
回复 使用道具 举报
领题来练练
回复 使用道具 举报
打印图案,。看起来很好玩的样子:D
回复 使用道具 举报
看看什么题目
回复 使用道具 举报
新人领题~~
回复 使用道具 举报
领以前的题
回复 使用道具 举报
拿个题试一试
回复 使用道具 举报
怎么提交题目的
回复 使用道具 举报
领题,,,,
回复 使用道具 举报
回帖领题
回复 使用道具 举报
挣技术分了,急缺
回复 使用道具 举报
方法有点小笨重

aa.png (33.24 KB, 下载次数: 0)

aa.png

TriangleDemo.rar

439 Bytes, 阅读权限: 200, 下载次数: 1

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
领题喽!:)
回复 使用道具 举报
回帖领题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马