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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

开始复习做一些练习题准备申请入学考试了,觉得这道题很好,是考查二维数组和循环嵌套的结合,如果做错了,请指教!!谢谢!
  1. package array;
  2. /*

  3.         需求:打印杨辉三角形(行数可以键盘录入)
  4.        
  5.         1
  6.         1 1       
  7.         1 2 1
  8.         1 3 3 1
  9.         1 4 6 4 1
  10.         1 5 10 10 5 1

  11.         分析:看这种图像的规律
  12.                 A:任何一行的第一列和最后一列都是1
  13.                 B:从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
  14.        
  15.         步骤:
  16.                 A:首先定义一个二维数组。行数如果是n,我们把列数也先定义为n。
  17.                   这个n的数据来自于键盘录入。
  18.                 B:给这个二维数组任何一行的第一列和最后一列赋值为1
  19.                 C:按照规律给其他元素赋值
  20.                         从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
  21.                 D:遍历这个二维数组。
  22. */
  23. import java.util.Scanner;

  24. class Array2Test3 {
  25.         public static void main(String[] args) {
  26.                 //创建键盘录入对象
  27.                 Scanner sc = new Scanner(System.in);
  28.                
  29.                 //这个n的数据来自于键盘录入。
  30.                 System.out.println("请输入一个数据:");
  31.                 int n = sc.nextInt();
  32.                
  33.                 //定义二维数组
  34.                 int[][] arr = new int[n][n];
  35.                
  36.                 //给这个二维数组任何一行的第一列和最后一列赋值为1
  37.                 for(int x=0; x<arr.length; x++) {
  38.                         arr[x][0] = 1; //任何一行第1列
  39.                         arr[x][x] = 1; //任何一行的最后1列
  40.                 }
  41.                
  42.                 //按照规律给其他元素赋值
  43.                 //从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
  44.                 for(int x=2; x<arr.length; x++) {
  45.                         //这里如果y<=x是有个小问题的,就是最后一列的问题
  46.                         //所以这里要减去1
  47.                         //并且y也应该从1开始,因为第一列也是有值了
  48.                         for(int y=1; y<=x-1; y++) {
  49.                                 //每一个数据是它上一行的前一列和它上一行的本列之和。
  50.                                 arr[x][y] = arr[x-1][y-1] + arr[x-1][y];
  51.                         }
  52.                 }
  53.                
  54.                 //遍历这个二维数组。
  55.                 /*
  56.                 for(int x=0; x<arr.length; x++) {
  57.                         for(int y=0; y<arr[x].length; y++) {
  58.                                 System.out.print(arr[x][y]+"\t");
  59.                         }
  60.                         System.out.println();
  61.                 }
  62.                 */
  63.                 //这个时候,要注意了,内循环的变化必须和曾经讲过的九九乘法表类似
  64.                 for(int x=0; x<arr.length; x++) {
  65.                         for(int y=0; y<=x; y++) {
  66.                                 System.out.print(arr[x][y]+"\t");
  67.                         }
  68.                         System.out.println();
  69.                 }
  70.         }
  71. }
复制代码



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马