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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 大天 中级黑马   /  2016-7-24 22:34  /  224 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

怎么打印出一个杨辉三角?

2 个回复

倒序浏览
/*
需求:打印杨辉三角形(行数可以键盘录入)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

*/

import java.util.Scanner;
class Array2Test3 {
        public static void main(String[] args) {
                //每一行的个数与行数相同
                //每一行的起始数值为1,后面的数值等于其正上方数值+正上方左边的数值
                //每一行的最后一个数都为1

                //int[][] arr = {{1},{1,1},{1,2,1},{1,3,3,1},{1,4,6,4,1},{1,5,10,10,5,1}};
                //arr[0] ={1};                                arr[0][0]=1
                //arr[1] ={1,1};                        arr[1][0]=1,arr[1][1]=1
                //arr[2] ={1,2,1};                        arr[2][0]=1,arr[2][1]=2,arr[2][2]=1
                //arr[3] ={1,3,3,1};                arr[3][0]=1,arr[3][1]=3,arr[3][2]=3,arr[3][3]=1
                //arr[4] ={1,4,6,4,1};                arr[4][0]=1,arr[4][1]=4,arr[4][2]=6,arr[4][3]=4,arr[4][4]=1
                //arr[5] ={1,5,10,10,5,1};        arr[5][0]=1,arr[5][1]=5,arr[5][2]=10,arr[5][3]=10,arr[5][4]=5,arr[5][5]=1,


                Scanner sc =new Scanner(System.in);
                System.out.println("请输入你需要打印的杨辉行数:");
                int x = sc.nextInt();//输入的行数其实就是每个一维数组的长度  arr[x-1].length=x
               
                //int[][] arr ={arr[][],arr[][],arr[][],arr[][]};
               
                System.out.println("你输入的行数得到的杨辉三角形是:");
                //当行数和列数都知道后,首先定义一个数组
                int[][] arr = new int[x][x];
               
                //按照规律进行代码实现
                for (int a=0;a<x ;a++ ) {
                        //a=0行的数值只有一个,就是1;
                        if(a == 0){
                                arr[a][a] = 1;
                                System.out.println(arr[a][a]);
                        //每一行的数据的规矩就是第一个和最后一个相等都为1;
                        //后面的数值等于其正上方数值+正上方左边的数值;
                        }else{
                                for (int b=0;b<=a ;b++ ) {
                                        //y=0行的数值都是1,都是开头第一位数;
                                        if(b == 0){
                                                arr[a][b] = 1;
                                                System.out.print(arr[a][b]+" ");
                                        //a=b行的数值都是1,同时也是最后一位数值;
                                        }else if(a == b){
                                                arr[a][b] = 1;
                                                System.out.print(arr[a][b]);
                                                System.out.println("");

                                        //每行中除去开头和结尾的数值,其他数值的规律
                                        }else{
                                                arr[a][b]=arr[a-1][b-1]+arr[a-1][b];
                                                System.out.print(arr[a][b]+" ");
                                        }
                                }
                        }
                }
        }
}
回复 使用道具 举报
  1. package 杂七杂八;

  2. public class Yanghuisanjiao {
  3.     public static void main(String[] args) {
  4.         int arr[][] = new int[10][10];
  5.        
  6.         //此处for循环给边缘赋值
  7.         for (int i = 0; i < 10; i++) {
  8.             arr[i][i] = 1;
  9.             arr[i][0] = 1;
  10.         }
  11.        
  12.         //此处for循环给中心赋值
  13.         for (int i = 2; i < 10; i++) {
  14.             for (int j = 1; j < i; j++) {
  15.                 arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
  16.             }
  17.         }
  18.        
  19.         //此处for循环给其他位置赋上空格
  20.         for (int i = 0; i < 10; i++) {
  21.             for (int k = 0; k < 2 * (10 - i) - 1; k++) {
  22.                 System.out.print(" ");
  23.             }
  24.             for (int j = 0; j <= i; j++) {
  25.                 System.out.print(arr[i][j] + "   ");
  26.             }
  27.             System.out.println();
  28.         }
  29.     }
  30. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马