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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hamesksk 中级黑马   /  2015-3-14 14:15  /  2360 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

怎么在控制台打出这个形状?
      *  
    ***
  ******
********
  ******  
    ***   
     *  

15 个回复

倒序浏览
你先想想一个正三角的打印,和一个反三角打印后,你基本就有思路了哈
回复 使用道具 举报
不多说代码呈上

import java.util.Scanner;
public class Test {
public static void main(String[] args) {
  System.out.println("请输入一个正整数:");
  Scanner scanner=new Scanner(System.in);
  int num=0;
  try
  {
  num=Integer.parseInt(scanner.nextLine());
  }
  catch(Exception ex)
  {
   num=0;
   System.out.println("输入的不正确,请核实");
  }
  if(num!=0)
  {
  for (int i = 1; i <= num; i++) {
     for (int j = 1; j <= num - i; j++)// 打印每行的空格
      {
       System.out.print(" ");
      }
      for (int j = 1; j <= 2 * i - 1; j++) // 打印每行的*
      {
       System.out.print("*");
      }
      System.out.println();
     }   
  }
    }
}
回复 使用道具 举报
你这个图形貌似不是菱形,中间那行少了一个“*”,行数星是1、3、6、8、6、3、1,如果是菱形,那么肯定星星之间的距离不一样
回复 使用道具 举报
我比较疑惑的是1,3,6,8是什么规律
回复 使用道具 举报
public class Rhombus {

        /**
         * 打印出一个菱形的图案
         */
        public static void main(String[] args) {
                show(5);
                       
        }
       
        public static void show(int n) {
                if (n % 2 != 0) {
                        int array[] = new int[n];
                        for (int i = 0; i < array.length; i++) {
                                if (i < n / 2) {
                                        array[i] = 1 + 2 * i;
                                } else {
                                        array[i] = n - 2 * (i - n / 2);
                                }
                        }
                        for (int i = 0; i < n; i++) {
                                for (int j = n / 2; j > i; j--) {
                                        System.out.print("  ");
                                }
                                if (i > n / 2) {
                                        for (int k = 0; k < i-n/2; k++) {
                                                System.out.print("  ");
                                        }
                                }
                                for (int m = 0; m < array[i]; m++) {
                                        System.out.print("* ");
                                }
                                System.out.println();
                        }
                } else {
                        System.out.println("请重新输入一个奇数");
                }
        }
}
回复 使用道具 举报
很久之前写过,楼主可以参考参考
回复 使用道具 举报
王刚岩 发表于 2015-3-14 14:50
不多说代码呈上

import java.util.Scanner;

你这个打出来是三角形。。。
回复 使用道具 举报
lrd7512369 发表于 2015-3-14 14:56
public class Rhombus {

        /**

写的非常棒
回复 使用道具 举报
一看到这种  不用想 双循环 最外层的是行 最里层循环为列 当然你也可以反过来
行 列 是固定的 所以里外层循环的次数可固定 然后 通过打印* (这里有空格) 到未出 println 换行
就这样 循环打印  配合前几楼发的代码 一看 你就理解了
其实一点都不复杂 想通很简单
回复 使用道具 举报
Shey 中级黑马 2015-3-14 18:15:49
11#
  1. /**
  2.          * @param height 上三角型高度
  3.          */
  4.         public static void foo(int height) {
  5.                 int index = height-1;
  6.                 for(int i=0; i<height*2-1; i++,index--) {
  7.                         int absin = Math.abs(index);
  8.                         if(absin!=0)
  9.                                 System.out.printf("%"+absin+"s", "");
  10.                         for(int j=0; j<2*(height-absin)-1; j++) {
  11.                                 System.out.print("*");
  12.                         }
  13.                         System.out.println();
  14.                 }
  15.         }
复制代码


回复 使用道具 举报
用嵌套循环!!!!
回复 使用道具 举报
class Forfor
回复 使用道具 举报
class Forfor
{
        public static void main(String[] args)
        {
                for (int x=0;x<8 ;x++ )
                {
                        for (int y=x;y<8 ;y++ )
                        {
                                System.out.print(" ");
                        //倒三角y的起始化值为x(y=x)
                        }
                       
                       
                        for (int y=0;y<=x ;y+=1 )
                        //正三角y的判断条件为x(y<=x)
                        {
                                System.out.print(" *");
                        }
                        System.out.println();
                }
        }
}

这只是正三角形的打印,倒着是一样的道理
回复 使用道具 举报
这个还可以旋转的哦,王老师以前出过这个题
回复 使用道具 举报
直接输出空格加星号就行啊,比想循环算法简单多了。没技术含量是事实,问题没有要求的话绝对简单快捷有效率不是?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马