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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class MyTest{
        public static void main(String[] args){
                for(int x=0; x<5; x++){
                        for(int y=x+1; y<5; y++){
                                System.out.print(" ");
                        }
                        for(int z=0; z<2*x+1; z++){
                                System.out.print("*");
                        }
                        System.out.println();
                }
                for(int x=1; x<5; x++){
                        for(int y=0; y<x; y++){
                                System.out.print(" ");
                        }
                        for(int z=x; z<10-x-1; z++){
                                System.out.print("*");
                        }
                        System.out.println();
                }
        }
}

这种方式可以打印出菱形,想用判断方式进一步改进代码,麻烦牛人解答。

9 个回复

倒序浏览
求解答.......
回复 使用道具 举报
  1. public class Diamond {

  2.         public static void main(String[] args) {
  3.                  
  4.                 int line = 5;
  5.                 for (int i = 1; i < line * 2; i++) {
  6.                         int spaces = line - i >= 0 ? line - i : i - line;
  7.                         for (int j = 0; j < spaces; j++)
  8.                                 System.out.print(" ");
  9.                         int stars = 2 * (line - spaces) - 1;
  10.                         for (int j = 0; j < stars; j++)
  11.                                 System.out.print("*");
  12.                         System.out.println();
  13.                 }
  14.         }
  15. }
复制代码
回复 使用道具 举报
本帖最后由 李春丽 于 2014-9-15 18:34 编辑
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 printLing(7);//最宽处几个 * ,单数。
  6.         }
  7.         public static void printLing(int kuan)
  8.         {
  9.                 int half = kuan/2;//菱形顶点。
  10.                 int zong = 0;//每行要打印的空格和*的总数。
  11.                 //外层行循环,行
  12.                 for(int i=0;i<kuan;i++)
  13.                 {
  14.                         //内层循环,每行打印内容
  15.                         if(kuan/2>i)//临界点
  16.                         {
  17.                                 zong = half+(i*2+1);
  18.                                 hang(zong,half);
  19.                                 half--;//菱形左侧空格数 自减。
  20.                         }
  21.                         else //菱形上半部分打印完
  22.                         {
  23.                                 zong = kuan-half;
  24.                                 hang(zong,half);
  25.                                 half++;
  26.                         }
  27.                 }
  28.         }

  29.         //每行的打印内容。
  30.         private static void hang(int zong,int half)
  31.         {
  32.                 for(int j=0;j<zong;j++)
  33.                 {
  34.                         if(j<half)//菱形左半侧 空格,每行打印数。
  35.                         {
  36.                                 sop(" ");
  37.                         }
  38.                         else//每行 * 打印数。
  39.                         {
  40.                                 sop("*");
  41.                         }
  42.                 }
  43.                 sop('\n');
  44.         }
  45.         public static void sop(Object obj)
  46.         {
  47.                 System.out.print(obj);
  48.         }
  49. }
复制代码

结果:
         

感觉我做的还不是超复杂的那种,看看吧,总之是种解题思路。


回复 使用道具 举报
  1. import java.util.*;

  2. public class lingxing {
  3.         public static void main(String[] args) {
  4.                 Scanner input = new Scanner(System.in);
  5.                 int rows;
  6.                 System.out.println("请输入菱形的行数");
  7.                 rows = input.nextInt();
  8.                 while (rows % 2 == 0) {
  9.                         System.out.println("请输入奇数:");
  10.                         rows = input.nextInt();
  11.                 }
  12.                 for (int i = 1; i <=rows / 2 + 1; i++) {// 控制菱形上半部的行数
  13.                         for (int j = rows / 2; j >=i; j--) {// 控制菱形上半部的空格数
  14.                                 System.out.print(" ");

  15.                         }
  16.                         for (int j = 1; j < i * 2 ; j++) {//菱形上半部的*数
  17.                                 System.out.print("*");

  18.                         }
  19.                         System.out.println();
  20.                 }
  21.                 for (int i = rows / 2; i > 0; i--) {// 控制菱形下半部的行数
  22.                         for (int j = rows / 2; j >= i; j--) {// 控制菱形下半部的空格
  23.                                 System.out.print(" ");
  24.                         }
  25.                         for (int j = 1; j < i * 2 ; j++) {// 控制菱形下半部的*数
  26.                                 System.out.print("*");

  27.                         }
  28.                         System.out.println();
  29.                 }
  30.         }

  31. }
复制代码
回复 使用道具 举报
都是大神!
回复 使用道具 举报

多谢回复  我去研究下
回复 使用道具 举报
李春丽 发表于 2014-9-15 18:31
结果:
         

谢谢回答  感觉好复杂  我去看下思路
回复 使用道具 举报

谢谢回答  我仔细研究下
回复 使用道具 举报
lq你微笑时好美 来自手机 中级黑马 2014-9-16 00:42:15
10#
马…………
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马