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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小石头39910 中级黑马   /  2013-5-4 19:10  /  2234 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我是一个在校大学生,我会打印一个实心的菱形,但是不会打印空心菱形,希望各位能够帮助一下,,,

class Test1
{
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<=x;z++)
   {
   System.out.print("* ");
   }
   System.out.println();
  }
for(int x=0;x<5;x++)
  {
   for(int y=0;y<x;y++)
   {
    System.out.print(" ");
   }
   for(int z=x;z<5;z++)
   {
    System.out.print("* ");
   }
   System.out.println();
  }
}
}

点评

建议楼主在相应的地方加上注释,显得清晰些  发表于 2013-5-4 22:40

评分

参与人数 1技术分 +2 收起 理由
黄玉昆 + 2

查看全部评分

5 个回复

倒序浏览
  1. import java.util.Scanner;  
  2. public class Test {  

  3. public static void main(String[] args) {
  4.    Scanner input = new Scanner(System.in);
  5.      System.out.print("请输入要打印拼成菱形上半个三角形的行数,rows = ");  
  6.      int rows = input.nextInt();
  7.      int i, j, k; // 初始化变量
  8.            for (i = 1; i <= rows; i++) {
  9.             // 外层循环控制行数控制台接收的参数rows即为上半个三角形的行数   
  10.            // 内循环一控制空格的输出   
  11.            for (j = 1; j <= rows - i; j++)     
  12.            System.out.print(" ");   
  13.             // 内循环二控制*的输出  
  14.              for (k = 1; k <= 2 * i - 1; k++)   
  15.               // 判断是本行的第一个和最后一个打印*   
  16.               if (k == 1 || k == 2 * i - 1)   
  17.                 System.out.print("*");     
  18.                 // 其他的都输出空格     
  19.                 else      
  20.                 System.out.print(" ");   
  21.                 System.out.println("");   
  22.                 }   
  23.                 // 下半个三角形   
  24.                 for (i = 1; i <= rows - 1; i++) {
  25.                 // 外层循环控制行数下半个三角形比上面的少一行所以rows-1   
  26.                 for (j = 1; j <= i; j++)     
  27.                 System.out.print(" ");   
  28.                 for (k = 1; k < (rows - i) * 2; k++)     
  29.                 // 第一个为1最后一个是(rows-i)*2-1,因为k<(row-i)*2不是<=     
  30.                 if (k == 1 || k == (rows - i) * 2 - 1)      
  31.                 System.out.print("*");     
  32.                 else      
  33.                 System.out.print(" ");   
  34.                 System.out.println("");   
  35.                 }
  36.        }
  37. }
复制代码
应该是这样吧

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 乘鱼飞 于 2013-5-4 20:35 编辑
  1. <blockquote>import java.util.Scanner;
复制代码
import java.util.Scanner;

public class TestLin {

        public static void main(String[] args) {

                Scanner sc=new Scanner(System.in);
                System.out.print("请输入一个大于1的整数 ");
                int num=sc.nextInt();             //键盘录入
                if(num>1)
                {
                        printLin(num);
                }
                else
                {
                        System.out.print("你输入的数字不正确 ");
                }
        }
        public static void printLin(int n)
        {
                if(n%2==0)//计算菱形大小
                        n++;
                for(int i=0;i<n/2+1;i++)//上半部分
                {
                        for(int j=n/2+1;j>i+1;j--)//打印空白
                        {
                                System.out.print(" ");//输出左上角位置的空白
                        }
               
                for(int j=0;j<2*i+1;j++)//打印 *
                {
                        if(j==0||j==2*i)
                        {
                                System.out.print("*");//输出菱形的上半部边缘
                        }else
                        {
                                System.out.print(" ");//输出菱形上半部空心
                        }
                }
                System.out.println(" ");
          }
                //下半部  从 n/2+1开始
                for(int i=n/2+1;i<n;i++)
                {
                        for(int j=0;j<i-n/2;j++)//打印空白,空白递增j++
                        {
                                System.out.print(" ");
                        }
                        for(int j=0;j<2*n-1-2*i;j++)//打印 *
                        {
                                if(j==0||j==2*(n-i-1))
                                {
                                        System.out.print("*");//输出菱形的下半部边缘
                                }else
                                {
                                        System.out.print(" ");//输出菱形下半部空心
                                }
                        }
                        System.out.println(" ");
                  }
                }
        }
结果演示:
请输入一个大于1的整数
5
  *
* *
*   *
* *
  *

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
public class de {
        public static void main(String[] args) {
                for (int i = 0; i < 5; i++) { // 外层循环是行数
                        // 空格
                        for (int j = 0; j < 4 - i; j++) {
                                System.out.print(" ");
                        }
                        System.out.print("*");
                        for (int j = 0; j <2* i-1 ; j++) {
                                System.out.print(" ");                               
                        }
                        if(i==0){
                                System.out.print(" ");
                        }else{
                                System.out.print("*");
                        }
                        // 换行
                        System.out.println();
                }               
                for (int i = 4; i >0; i--) { // 外层循环是行数
                        // 空格
                        for (int j = 0; j <5- i; j++) {
                                System.out.print(" ");
                        }                       
                        System.out.print("*");
                        for (int j = 0; j < 2 * i-3; j++) { // 打印每一行*的个数
                                System.out.print(" ");
                        }
                        if(i==1){
                                System.out.print(" ");
                        }else{
                                System.out.print("*");
                        }                       
                        // 换行
                        System.out.println();
                }               
        }
}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报

打印空心菱形

本帖最后由 黑马-王双 于 2013-5-5 21:53 编辑

class Test2
{
public static void main(String args[])
{
  abc(7);
}
  /*
  思路:分为上下三角两个部分。先打印左边的空格数,然后固定打一次星号,
  然后继续打空格数,最后打印一次星号
  */
  public static void abc(int num) //num表示最长边的星号个数
  {
   //上三角
    for(int x=0;x<num;x++)//x表示上三角的行号
    {
    for(int y=x+1;y<num;y++)
    {
     System.out.print(" ");
     }
    System.out.print("*");
     for(int z=0;z<=2*x-2;z++)
    {
      
     System.out.print(" ");
     if(z==2*x-2)
       System.out.print("*");
    }
     System.out.println();
    }
      //下三角
    for(int x=0;x<num-1;x++)
    {
     for(int y=0;y<x+1;y++)
     {
      System.out.print(" ");
     }
     System.out.print("*");
     for(int z=1;z<=2*(num-2-x)-1;z++)
     {
      System.out.print(" ");
      if(z==2*(num-2-x)-1)
       System.out.print("*");  
     }
     System.out.println();   
    }
   }
     
}
  

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
lass  KongXinLing2
         {
public static void main(String[] args)
         {
                int count1=8;
                int count=count1/2+1;
                 //上半个三角形
          for(int i=1;i<=count;i++)
                  {
                //输出空格
          for(int j=1;j<=count-i;j++)
                  {
            System.out.print(" ");
                  }
          for(int j=1;j<=i*2-1;j++)
              {
             if(i==1)
              {
            System.out.print("*");
            }
            else
                    {
          if(j==1||j==i*2-1)
                    {
          System.out.print("*");
                        }
                        else
                      {
           System.out.print(" ");
                        }
           }
          }
          System.out.println();
           }
  
  //下半个三角形
   for(int i=count;i>=1;i--)
           {
       if(i!=count)
                 {
     //输出空格
      for(int j=1;j<=count-i;j++)
                {
       System.out.print(" ");
             }
      //输出*
      for(int j=1;j<=i*2-1;j++)
                {
       if(i==1)
                 {
       System.out.print("*");
       }else
                 {
        if(j==1||j==i*2-1)
                  {
         System.out.print("*");
        }
          else
                  {
         System.out.print(" ");
              }
      }
      }
     
    //换行
    System.out.println();
      }
  }
}
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马