黑马程序员技术交流社区

标题: for循环输出菱形问题 [打印本页]

作者: 申延超    时间: 2012-8-14 18:34
标题: for循环输出菱形问题
请用户输入一个奇数,然后输出类似下面的菱形
  *
***                                                  
  *

这个代码怎么写呢?想了蛮久,不会,谢谢各位啦。

作者: 王广彬    时间: 2012-8-14 19:29
class Demo
{
public static void main(String[] args)
{
  for(int i=1;i<=4;i++){
   for(int a=(4-i);a>0;a--){
    System.out.print(" ");
   }
   for(int j=1;j<=i;j++){
    System.out.print("* ");
   }
   System.out.println("");
  }
  for(int i=3;i>0;i--){
   for(int a=(i-1);a<3;a++){
    System.out.print(" ");
   }
   for(int j=0;j<i;j++){
    System.out.print("* ");
   }
   System.out.println("");
  }
}
}
这是输出菱形的结构,主要是分为上下两部分,结合数据的变化而变化!
作者: 郑小杰    时间: 2012-8-14 22:53
我给你说说思路,自己试一下吧
可以把这个菱形看成上下两部分,由两个等腰三角形组成。
下边的那个是倒着的,把这两个等腰三角形打印出来就拼出菱形了。
首先,用一个for循环用来保证可以有好多行
然后,在这个for循环里再用两个for循环,一个用来打印空格,一个用来打印*,
再然后,用同样的方法把下边的等腰三角形打印出来就行了。

关键是这几个for循环里的东西,多试试


作者: 申延超    时间: 2012-8-14 22:58
郑小杰 发表于 2012-8-14 22:53
我给你说说思路,自己试一下吧
可以把这个菱形看成上下两部分,由两个等腰三角形组成。
下边的那个是倒着的 ...

非常感谢,已经搞清楚了
作者: 王龙喜    时间: 2012-8-14 23:31
static void Main(string[] args)
        {
            Console.WriteLine("请输入一个奇数(如:3  5  7……)");
            int m= int.Parse(Console.ReadLine());
            int n = (m+1)/2;

            for (int i = 1; i <=n; i++)     //输出菱形的上半部分
            {
                for (int j = 1; j <= n - i; j++)
                {
                    Console.Write(" ");
                }
                for (int k = 1; k <=2 * i - 1; k++)
                {
                    Console.Write("*");
                }
                Console.Write("\n");

            }
            for (int i = 1; i <= n - 1; i++)     //输出菱形的下半部分
            {
                for (int j = 1; j <= i; j++)
                {
                    Console.Write(" ");
                }
                for (int k = 1; k <= 2 * n -1- 2 * i; k++)
                {
                    Console.Write("*");
                }
                Console.Write("\n");

            }
            Console.ReadKey();

        }

作者: 黑马王建伟    时间: 2012-8-14 23:31
  1. package com;
  2. public class Demo{
  3.                  /**
  4.                   * 打印如下图形:
  5.                   *        *
  6.                          * * *
  7.                        * * * * *
  8.                      * * * * * * *
  9.                        * * * * *
  10.                          * * *
  11.                            *
  12.                   */
  13.         public static void main(String[] args) {
  14.                 // j控制行,i控制列
  15.                 for (int i = 0; i < 8; i++) {
  16.                         if (i % 2 == 0) {
  17.                                 for (int j = 0; j < 9 - i; j++) {
  18.                                         System.out.print(" ");
  19.                                 }
  20.                                 for (int j = 0; j < (i + 1); j++) {
  21.                                         System.out.print('*' + " ");
  22.                                 }
  23.                                 System.out.println();
  24.                         }
  25.                 }
  26.                 // 中部以及下半部分
  27.                 for (int i = 0; i < 8; i++) {
  28.                         if (i % 2 == 0) {
  29.                             for (int j = 0; j < 4 + i; j++) {
  30.                              System.out.print(" ");
  31.                             }
  32.                             for (int j = 0; j < 5 - i; j++) {
  33.                                     System.out.print(" *");
  34.                             }
  35.                                     System.out.println();
  36.                         }
  37.                 }
  38.         }
  39. }
复制代码
直接给出代码,看吧




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