黑马程序员技术交流社区

标题: 打印图形问题,我只能打印出上半部分,求兄弟们给下半... [打印本页]

作者: Maple_枫    时间: 2014-3-30 16:05
标题: 打印图形问题,我只能打印出上半部分,求兄弟们给下半...
本帖最后由 Maple_枫 于 2014-4-5 11:39 编辑

输入高度,输出菱形。如:输入9, 将输出如下图形
     #
    ###
   #####
  #######
#########
  #######
   #####
    ###
     #





  1. public class Test6 {
  2.         public static void main(String[] args)
  3.         {
  4.                 print(5);
  5.         }
  6.         public static void print(int x)
  7.         {
  8.                 int a=0;
  9.                 for(int i=1;i<=x;i+=2)
  10.                 {
  11.                         for(int b=a;b<5;b++)
  12.                         {
  13.                                 System.out.print(" ");
  14.                         }
  15.                         for(int y=0;y<i;y++)
  16.                         {
  17.                                 System.out.print("#");
  18.                         }
  19.                         for(int b=0;b<a+2;b++)
  20.                         {
  21.                                 System.out.print(" ");
  22.                         }
  23.                         for(int c=0;c<=x+1;c+=2)
  24.                         {
  25.                                 System.out.print("#");
  26.                         }
  27.                         x++;
  28.                         
  29.                         System.out.println();
  30.                         
  31.                         a++;
  32.                 }
  33.         }
  34.         
  35. }
复制代码

作者: 僚机i    时间: 2014-3-30 16:08
晕。。你的内层循环怎么并列了这么多啊
  1. import java.util.Scanner;
  2. /**
  3. * 输入行数打印菱形
  4. */
  5. public class Diamond {
  6.         public static void main(String[] args) {
  7.                 int rows = 0;        //菱形的行数
  8.                 Scanner input = new Scanner(System.in);
  9.                 System.out.print("请输入菱形行数:");
  10.                 rows = input.nextInt();

  11.                 while(rows%2 == 0){
  12.                         System.out.print("请输入奇数:");
  13.                         rows = input.nextInt();
  14.                 }

  15.                 int n = (rows+1)/2;
  16.                 //打印菱形的上半部分
  17.                 for(int i = 1; i <= n; i++){//外层循环变量i控制行数
  18.                         for(int j = 1; j <= n-i; j++){//内层循环变量j控制该行空格数
  19.                                 System.out.print(" ");
  20.                         }
  21.                         for(int k = 1; k <= 2*i-1; k++){//内层循环变量k控制该行*号数
  22.                                 System.out.print("*");
  23.                         }
  24.                         System.out.print("\n");
  25.                 }
  26.                 //打印菱形的下半部分
  27.                 for(int i = n-1; i >= 1; i--){
  28.                         for(int j = 1; j <= n-i; j++){
  29.                                 System.out.print(" ");
  30.                         }
  31.                         for(int k = 1; k <= 2*i-1; k++){
  32.                                 System.out.print("*");
  33.                         }
  34.                         System.out.print("\n");
  35.                 }
  36.         }
  37. }
复制代码

作者: 僚机i    时间: 2014-3-30 16:09
希望能对你有点帮助。。
作者: 松毛    时间: 2014-3-30 17:11
你好,下面的代码可以参考一下。
  1. public class Test01 {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 // TODO Auto-generated method stub
  7.                 printStar(5);

  8.         }
  9.        
  10.        
  11.         public static void printStar(int num){
  12.                 for(int i=1; i<=num; i++){    //该外层for循环控制上半部分打印的行数;
  13.                         for(int x=i; x<=num-1; x++){  //该内层for循环控制打印的空格数;
  14.                                 System.out.print(" ");
  15.                         }
  16.                         for(int y=1; y<=i; y++){      //该内层for循环控制打印的*,注意为了对称要带上空格。
  17.                                 System.out.print("* ");
  18.                         }
  19.                         System.out.println();      //每打印一次就换一次行;
  20.                 }
  21.                
  22.                 for(int z=1; z<=num-1; z++){  //该for循环控制下半部分打印的行数,因为要形成对称效果所以要比上半部分少打印一行即z<=num-1;
  23.                         for(int n=1; n<=z; n++){  //这里的内层循环更上面的类似了。
  24.                                 System.out.print(" ");
  25.                         }
  26.                         for(int m=z; m<=num-1; m++){
  27.                                 System.out.print("* ");
  28.                         }
  29.                        
  30.                         System.out.println();
  31.                 }
  32.         }

  33. }
复制代码




作者: 杨希    时间: 2014-3-31 11:43





  1. 请参考哈

  2. class Demo
  3. {
  4.        
  5.        
  6.         public static void main(String args[])
  7.         {
  8.                 print(9);
  9.         }
  10.                
  11.         public static void print(int h)
  12.         {       
  13.                
  14.                 for(int x = 0;x < h;x++)
  15.                 {
  16.                         for(int a = x;a < h-1;a++)
  17.                         {
  18.                                 sop(" ");
  19.                         }
  20.                         for(int b = 0;b <= x;b++)
  21.                         {
  22.                                 sop("# ");   // #号旁边有个空格,感觉这样会好看一些
  23.                         }
  24.        
  25.                         System.out.println();//换行       
  26.                 }
  27.        
  28.        
  29.                 for(int y = 0;y < h;y++)
  30.                 {
  31.                         for(int m = 0;m <= y;m++)
  32.                         {
  33.                                 sop(" ");
  34.                         }
  35.                         for(int z = y;z < h;z++)
  36.                         {
  37.                                 sop("# ");
  38.                         }
  39.                         System.out.println();//换行
  40.                
  41.                 }  
  42.         }
  43.         public static void sop(Object obj)
  44.         {
  45.                 System.out.print(obj);
  46.         }

  47. }
复制代码





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