黑马程序员技术交流社区

标题: 键盘输入,打印空心菱形 [打印本页]

作者: hello隔壁老李    时间: 2015-9-12 22:38
标题: 键盘输入,打印空心菱形
我是刚学会了简单的键盘录入,然后用上for的嵌套循环打印*号的空心菱形。
但是一个问题,输入7,打印的是7行。输入10,打印的是11行,搞不懂问题出现在哪里?
  1. /*需求:打印正金字塔

  2.    *
  3.   * *
  4. *   *
  5. *-----*
  6. *---*
  7.   *-*
  8.    *
  9.   思路:
  10.        1,共4行
  11.        2,左边空白部分是一个倒三角形
  12.        3,每列的数量随着行数变化
  13.   步骤:
  14.         1,大圈套小圈,for外循环定义行数
  15.         2,内循环定义空白倒三角形(尖朝下,内循环初始化值随着外循环变化)
  16.         3,内循环定义列数(尖朝上,内循环条件随着外循环变化)
  17.   注意:
  18.        1,内循环里的输出打印语句的print,外循环的是println
  19.        2,注意步骤3的规律的变化
  20. */

  21. //导入包
  22. import java.util.Scanner;
  23. class rhomb
  24. {
  25.         public static void main(String[] args)

  26.         {
  27.                 System.out.println("请输入正整数数字:");
  28.                 //创建对象,system。in是标准输入流,录入键盘输入
  29.                 Scanner sc = new Scanner(System.in);
  30.                 //定义变量,获取录入的数据
  31.                 int c =sc.nextInt();
  32.                
  33.                 for(int x=1;x<(c/2+2);x++)  //外循环,条件判断循环4次
  34.                 {
  35.                         for(int z=x; z<(c/2+2); z++) //内循环定义空白倒三角形的
  36.                         {
  37.                                 System.out.print(" ");
  38.                         }
  39.                        
  40.                         for(int y=1; y<=x*2; y++)        //内循环打印输出列数的*
  41.                         {

  42.                                 if(y==1|| y==(x*2-1) )
  43.                                         {
  44.                                         System.out.print("*");
  45.                                         }
  46.                                 else
  47.                                 System.out.print(" ");       
  48.                         }
  49.                        
  50.                 System.out.println();  //外循环的换行功能
  51.                 }

  52.                 //倒三角形a=3
  53.                         int m=c/2;
  54.                 for(int a=1; a<=m; a++)
  55.                 {
  56.                         for(int b=0 ;b<=a ;b++)
  57.                         {
  58.                                 System.out.print(" ");
  59.                         }
  60.                         for(int n=((c/2)*2); n>(a*2-1); n--)        //内循环打印输出列数的*
  61.                         {
  62.                                         if(n==((c/2)*2) || n==(a*2))
  63.                                         {
  64.                                         System.out.print("*");
  65.                                         }
  66.                                 else
  67.                                 System.out.print(" ");       
  68.                         }
  69.                        
  70.                        
  71.                         System.out.println();  //外循环的换行功能
  72.                 }  }  }
复制代码

360截图20150912223530999.jpg (11.38 KB, 下载次数: 2)

360截图20150912223530999.jpg

360截图20150912223546918.jpg (12.58 KB, 下载次数: 1)

360截图20150912223546918.jpg





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