黑马程序员技术交流社区

标题: 求 一个菱形的简便方法 [打印本页]

作者: 宋闪    时间: 2014-12-21 11:00
标题: 求 一个菱形的简便方法
class LingXing
{
        public static void main(String[] args)
        {
                for (int x=0;x<4;x++ )
                {
                        for (int y=x;y<3;y++)
                        {
                                System.out.print(" ");
                        }
                        for (int z=0; z<=x;z++ )
                        {
                                System.out.print("*");
                        }
                        for (int m=1;m<=x;m++)
                        {
                                System.out.print("*");
                        }
                        System.out.println();
                }
                for (int x=0; x<3;x++)
                {
                        for (int y=0; y<=x;y++)
                        {
                                System.out.print(" ");
                        }
                        for (int z=x; z<3;z++ )
                        {
                                System.out.print("*");
                        }
                        for (int m=x;m<2;m++)
                        {
                                System.out.print("*");
                        }
                        System.out.println();
                }
        }
}
这是我费了九牛二虎之力写出来的一个由*组成的菱形,求简单的,或者提供一个思虑都行,,
作者: as604049322    时间: 2014-12-21 11:59
简单的办法:
  1. public static void printImg4(int num){
  2.         for (int i=1;i<=num;i++){
  3.             for(int j=1;j<=num-i;j++)
  4.                 System.out.print(" ");
  5.             for(int j=1;j<=i;j++)
  6.                 System.out.print("* ");
  7.             System.out.println();
  8.         }
  9.         for (int i=1;i<=num-1;i++){
  10.             for(int j=1;j<=i;j++)
  11.                 System.out.print(" ");
  12.             for(int j=1;j<=num-i;j++)
  13.                 System.out.print("* ");
  14.             System.out.println();
  15.         }
复制代码

必须打印充满的矩形:
  1.     public static void printDiamond(int  num){
  2.         for (int i=1;i<=num;i++){
  3.             for(int j=1;j<=num-i;j++)
  4.                 System.out.print(" ");
  5.             for(int j=1;j<=i*2-1;j++)
  6.                 System.out.print("*");
  7.             System.out.println();
  8.         }
  9.         for (int i=1;i<=num-1;i++){
  10.             for(int j=1;j<=i;j++)
  11.                 System.out.print(" ");
  12.             for(int j=1;j<=(num-i)*2-1;j++)
  13.                 System.out.print("*");
  14.             System.out.println();
  15.         }
  16.     }
复制代码

作者: caobin    时间: 2014-12-21 12:39
  1. class ClassDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 //打印菱形的规格
  6.                 print(8);
  7.         }
  8.         //打印菱形
  9.         public static void print(int a)
  10.         {
  11.                 //上半部分
  12.                 for (int x = 1;x <= a ;x++ )
  13.                 {
  14.                         for (int y =x;y <= a ;y++ )
  15.                         {
  16.                                 System.out.print(" ");
  17.                         }
  18.                         for (int z=1;z<x+x ;z++ )
  19.                         {
  20.                                 System.out.print("*");
  21.                         }
  22.                         System.out.println();
  23.                 }
  24.                 //下半部分
  25.                 for (int x=a+1;x>0 ;x-- )
  26.                 {
  27.                         for (int i =x;i<=a ;i++ )
  28.                         {
  29.                                 System.out.print(" ");
  30.                         }
  31.                         for (int y=0;y<x+x-1 ;y++ )
  32.                         {
  33.                                 System.out.print("*");
  34.                         }
  35.                         System.out.println();
  36.                 }
  37.         }
  38.                
  39. }
复制代码

作者: jamsjun    时间: 2014-12-22 22:50
楼上 的做法也没什么简约性啊,我也是按楼主的做法弄的,同求直接简单的方法
作者: aa524500    时间: 2014-12-22 23:14
  1. public class Test04 {
  2.         public static void main(String[] args) {

  3.                 for (int i = 0; i <= 7; i++) {
  4.                         if (i <4) {

  5.                                 for (int j = 1; j <= 4 - i-1; j++) {
  6.                                         System.out.print(" ");
  7.                                 }
  8.                                 if (i == 0) {
  9.                                         System.out.print("*");
  10.                                 } else {
  11.                                         for (int j2 = 1; j2 <=3 * (i); j2++) {
  12.                                                 System.out.print("*");
  13.                                         }
  14.                                 }
  15.                         } else if(i >4){
  16.                                 for (int j = 1; j <=i-4; j++) {
  17.                                         System.out.print(" ");
  18.                                 }
  19.                                 if ((7-i) == 0) {
  20.                                         System.out.print("*");
  21.                                 } else {
  22.                                         for (int j2 = 1; j2 <= 3 * (7-i); j2++) {
  23.                                                 System.out.print("*");
  24.                                         }
  25.                                 }
  26.                         }else {
  27.                                 continue;
  28.                         }

  29.                         System.out.println();
  30.                 }
  31.         }
  32. }
复制代码


这个代码简单,但是有点难理解,希望能适合你
作者: 天天小志    时间: 2014-12-22 23:30
  1. public class DiamondTest {
  2.         public static void main(String[] args) {
  3.                 int m,n;
  4.                 for(m=0;m<=8;m++){
  5.                         for(n=0;n<=8;n++){
  6.                                 if((m<=n+4)&&(m>=4-n)&&(m<=12-n)&&(m>=n-4)){
  7.                                         System.out.print("*");
  8.                                 }else{
  9.                                         System.out.print(" ");
  10.                                 }
  11.                         }
  12.                         System.out.println();
  13.                 }
  14.         }
  15. }
复制代码


这是我们班一个同学写的,你看能看懂不,反正我没看懂,不管代码量上来说是很简单,看懂了也告诉我下
作者: 曹震国    时间: 2014-12-22 23:42
学习了。学习了。好强。
作者: 7788665544    时间: 2014-12-22 23:45
用for循环写两个等腰三角形,一个正的一个倒的,连到一起就行了吧。
作者: 宋闪    时间: 2014-12-24 16:29
谢谢!!!!!!!!!!!!!
作者: as604049322    时间: 2014-12-24 20:12
天天小志 发表于 2014-12-22 23:30
这是我们班一个同学写的,你看能看懂不,反正我没看懂,不管代码量上来说是很简单,看懂了也告诉我下 ...

我想你的同学肯定数学比较好,而且一定以前研究过菱形的坐标问题。
为了弄懂你同学的方法我,画了一个图

  1.     public static void printImg5(int side){//side表示菱形的边长
  2.         int t=(side<<1)-1;
  3.         for(int m=1;m<=t;m++){
  4.             for(int n=1;n<=t;n++){
  5.                 if(side-n<m&&m<side+n&&n-side<m&&m<side*3-n)
  6.                     System.out.print("*");
  7.                 else
  8.                     System.out.print(" ");
  9.             }
  10.             System.out.println();
  11.         }
  12.     }
复制代码


作者: 天天小志    时间: 2014-12-25 21:50
as604049322 发表于 2014-12-24 20:12
我想你的同学肯定数学比较好,而且一定以前研究过菱形的坐标问题。
为了弄懂你同学的方法我,画了一个图
...

你这图好强大,听他说是之前数学的什么求阴影那一块的知识
作者: 宋闪    时间: 2014-12-26 21:37
as604049322 发表于 2014-12-24 20:12
我想你的同学肯定数学比较好,而且一定以前研究过菱形的坐标问题。
为了弄懂你同学的方法我,画了一个图
...

好有难度的题呀!!!!!!!!
作者: 木乃伊    时间: 2014-12-27 00:23
有点难度:sleepy:
作者: 清浅。。    时间: 2014-12-27 00:34
我以前也问过这个问题,楼上的回复让我受教了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2