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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

望大神斧正!
import java.util.Scanner;
class YangHui
{
public static void main(String[] args)
{
  Scanner sc=new Scanner(System.in);
  System.out.println("请输入n值");
  int n=sc.nextInt();               //需要打印几行杨辉三角
  System.out.println("杨辉三角");
  int[][] arr=new int[n][n];
   yangHui(arr,n);
   print(arr);
}
//将杨辉三角的值赋在数组里面
public static int[][] yangHui(int[][] arr,int n)
{
  arr[0][0]=1;
  for(int i=1;i<n;i++)
  {
   arr[i][0]=1;
   for(int j=1;j<=i;j++)
   {
    arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
    if(j==i)
    {
     arr[i][j]=1;
    }
   }
   
  }
  return arr;
}
//打印二维数组   就是后面打印的不好看,调了好久都没行!
public static void print(int[][] arr)
{
  for(int i=0;i<arr.length;i++)
  {
   for(int z=i;z<arr.length;z++)
   {
   System.out.print(" ");
   }
   
   for(int j=0;j<=i;j++)
   {
    System.out.print(arr[i][j]+" ");
   }
  
   System.out.println('\t');
  }
}
————————————————
  请输入n值
8
杨辉三角
        1
       1 1
      1 2 1
     1 3 3 1
    1 4 6 4 1
   1 5 10 10 5 1
  1 6 15 20 15 6 1
1 7 21 35 35 21 7 1

7 个回复

倒序浏览
楼主可以自定义一个方法,无论是多少位的整数,输出的时候占一定的位数(C++中格式化输出可以设置,不知道java中有没有这样的函数)
回复 使用道具 举报
edidada 发表于 2014-12-20 19:57
楼主可以自定义一个方法,无论是多少位的整数,输出的时候占一定的位数(C++中格式化输出可以设置,不知道j ...

谢谢你的建议!
回复 使用道具 举报
我也试试。。。
回复 使用道具 举报
弄了半个多小时:
  1. import java.util.Scanner;
  2. class  YanghuiTriangle
  3. {
  4.     public static void main(String[] args) {
  5.         while(true){
  6.             Scanner sc=new Scanner(System.in);
  7.             System.out.println("请输入被打印的杨辉三角形的行数:");
  8.             int n=sc.nextInt();//需要打印几行杨辉三角
  9.             System.out.println("杨辉三角");
  10.             yanghui(n);
  11.         }
  12.     }
  13.     /**
  14.     用于打印杨辉三角形
  15.     @param n 打印杨辉三角形的行数
  16.     */
  17.     public static void yanghui(int n){
  18.         int[][] a=new int[n][];
  19.         for(int i=0;i<n;i++){
  20.             a[i]=new int[i+1];
  21.             a[i][0]=1;
  22.             for(int j=1;j<i;j++)
  23.                 a[i][j]=a[i-1][j-1]+a[i-1][j];
  24.             a[i][i]=1;
  25.         }
  26.         printTriangle(a);
  27.     }
  28.     public static void printTriangle(int[][] arr){
  29.         for(int i=0;i<arr.length;i++){
  30.             for(int j=4;j<=((arr.length-i)<<2);j++)
  31.                     System.out.print(" ");
  32.             for(int j=0;j<arr[i].length;j++){
  33.                 System.out.print(arr[i][j]);
  34.                 for(int k=1;k<=8-(arr[i][j]+"").length();k++)//每个元素占8个位置
  35.                     System.out.print(" ");
  36.             }
  37.             System.out.println();
  38.         }
  39.     }
  40. }
复制代码

打印效果:
                            1
                        1       1
                    1       2       1
                1       3       3       1
            1       4       6       4       1
        1       5       10      10      5       1
    1       6       15      20      15      6       1
1       7       21      35      35      21      7       1
回复 使用道具 举报
as604049322 发表于 2014-12-21 09:54
弄了半个多小时:

打印效果:

谢谢你,我要好好看看
回复 使用道具 举报
太厉害了,新手情何以堪
回复 使用道具 举报
本帖最后由 as604049322 于 2014-12-21 11:13 编辑
x277402301t 发表于 2014-12-21 10:14
谢谢你,我要好好看看

觉得每个元素占6个位置就行了。DOS命令行把宽度不够,打不下来
  1. /*杨辉三角
  2. 1
  3. 1       1
  4. 1       2       1
  5. 1       3       3       1
  6. 1       4       6       4       1
  7. 1       5       10      10      5       1
  8. 1       6       15      20      15      6       1
  9. 1       7       21      35      35      21      7       1
  10.                             1
  11.                         1       1
  12.                     1       2       1
  13.                 1       3       3       1
  14.             1       4       6       4       1
  15.         1       5       10      10      5       1
  16.     1       6       15      20      15      6       1
  17. 1       7       21      35      35      21      7       1
  18. */
  19. import java.util.Scanner;
  20. class  YanghuiTriangle
  21. {
  22.     public static void main(String[] args) {
  23.         while(true){
  24.             Scanner sc=new Scanner(System.in);
  25.             System.out.println("请输入被打印的杨辉三角形的行数:");
  26.             int n=sc.nextInt();//需要打印几行杨辉三角
  27.             System.out.println("杨辉三角");
  28.             yanghui(n);
  29.         }
  30.     }
  31.     /**
  32.     用于打印杨辉三角形
  33.     @param n 打印杨辉三角形的行数
  34.     */
  35.     public static void yanghui(int n){
  36.         int[][] a=new int[n][];
  37.         for(int i=0;i<n;i++){
  38.             a[i]=new int[i+1];
  39.             a[i][0]=1;
  40.             for(int j=1;j<i;j++)
  41.                 a[i][j]=a[i-1][j-1]+a[i-1][j];
  42.             a[i][i]=1;
  43.         }
  44.         printTriangle(a,6);
  45.     }
  46.      /**
  47.     用于将保存杨辉三角形的数组打印出来
  48.     @param arr 保存杨辉三角形的数组
  49.     @param m 打印的每的元素的所占的长度
  50.     */
  51.     public static void printTriangle(int[][] arr,int m){
  52.         for(int i=0;i<arr.length;i++){
  53.             for(int j=3;j<=(arr.length-i)*(m/2);j++)
  54.                     System.out.print(" ");
  55.             for(int j=0;j<arr[i].length;j++){
  56.                 String temp=arr[i][j]+"";
  57.                 System.out.print(temp);
  58.                 for(int k=1;k<=m-temp.length();k++)//每个元素占6个位置
  59.                     if(j!=arr[i].length-1)
  60.                         System.out.print(" ");
  61.             }
  62.             System.out.println();
  63.         }
  64.     }
  65. }
复制代码

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马