黑马程序员技术交流社区

标题: for循环怎么打出菱形? [打印本页]

作者: PinkDay    时间: 2014-10-21 00:03
标题: for循环怎么打出菱形?
菱形怎么用for循环打出来啊?
一个人单机打代码好痛苦...
作者: cxdzh    时间: 2014-10-21 00:07

  1. class getPrism
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 prism(80);
  6.         }
  7.         public static void prism(int hangShu)
  8.         {
  9.                 if (hangShu<3||hangShu>80)
  10.                 {
  11.                         System.out.println("你要输出的菱形行数超出可执行范围!");
  12.                         return;
  13.                 }
  14.                 //hangShu这个变量代表要输出的菱形总行数..修改此变量即可输出不同行数的菱形.
  15.                 int shangHangShu=hangShu/2+hangShu%2;//判断尖角朝上部分的行数,总行数除以2,如果总行数是单数,上面多输出一行.
  16.                 int xiaHangShu=hangShu/2;//尖角朝下部分的行数.

  17.                 for (int i=1;i<=shangHangShu;i++ )//从1开始循环,输出上半部分.
  18.                 {
  19.                         for(int j=0;j<shangHangShu-i;j++)//先打印空格,因为尖角朝上,总行数减去当前行数即为要打印的空格数.
  20.                                 System.out.print(" ");
  21.                         for(int h=1;h<=i*2-1;h++)//第1行1颗星,第2行3颗,第3行5颗,即每行打印数为:(行数*2-1)颗
  22.                                 System.out.print("*");
  23.                         System.out.println("");//一行打印完换行.
  24.                 }
  25.                 for (int i=xiaHangShu;i>0;i-- )//输出尖角下半部分.
  26.                 {                       
  27.                         for(int j=xiaHangShu;j>i-hangShu%2;j--)//下半部分空格打印次数=行数,但如果总行数是双数,则空格打印次数=行数-1
  28.                                 System.out.print(" ");
  29.                         for(int h=i*2-1;h>0;h--)//每行打印星星次数与上半部分相反.
  30.                                 System.out.print("*");
  31.                         System.out.println("");
  32.                 }
  33.         }
  34. }
复制代码

作者: FlyFish    时间: 2014-10-22 09:59
public static void print(int x,int y)
        {
                for(int a=0;a<x;a++)
                {
                        for(int b=0;b<=a;b++)
                        {
                                System.out.print(" ");
                                                       
                        }
                        for(int c=0;c<y;c++)
                        {
                                System.out.print("*");
                        }
                        System.out.println();
                }

想打几行打几行……
作者: void    时间: 2014-10-22 10:35
Google一下你就知道
作者: zjy519893509    时间: 2014-10-22 12:59
这个问题类似于杨辉三角、先贴代码吧
  1. public class test111 {
  2.        
  3.         //private Formatter f=new Formatter(System.out);
  4.         /**
  5.          * @param args
  6.          */
  7.         public static void printf(int n){
  8.                 for(int i=n;i>-n-1;i--){
  9.                              String str1="";
  10.                              String str2="";
  11.                              if(Math.abs(i)!=0){
  12.                                           str1=Math.abs(i)+2*n+"";
  13.                              }else{
  14.                                           str1=2*n+"";
  15.       }
  16.                             if((n-Math.abs(i))*2!=0){
  17.                                           str2=(n-Math.abs(i))*2+1+"";
  18.                             }
  19.                        
  20.                             String format="%"+str1+"s%"+str2+"s\n";
  21.                              System.out.printf(format,"s","s");
  22.                 }
  23.         }
  24.         public static void main(String[] args) {
  25.                 Scanner in=new Scanner(System.in);
  26.                 System.out.println("请输入菱形大小:");
  27.                 int n=in.nextInt();
  28.                 test111.printf(n);
  29.                        
  30.         }

  31. }
复制代码
程序主要控制的是左侧的空格和中间的空格输出。
为了保证输出一个菱形,for 循环我把它定位n到-n,通过动态的合成一个formate字符串来控制样式的输出。
由于java不允许有%0S的样式输出,所以在合成时通过if语句将其规避了。
提示:%nS 当n为正值时,会在左边添加空格,为负值会在右边添加空格。


QQ截图20141022123638.png (827 Bytes, 下载次数: 42)

QQ截图20141022123638.png

作者: mingtianrsm    时间: 2014-10-22 18:18
菱形就是一个正三角形和一个倒三角形弄一块儿了,只要你会打三角形,就可以拼出菱形了。如果都不会的话,就在纸上画一个小的找规律就行了。




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