| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 10760 人关注过本帖
标题:java 杨辉三角
只看楼主 加入收藏
hanxingxing
Rank: 1
等 级:新手上路
帖 子:26
专家分:9
注 册:2010-3-14
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:16 
java 杨辉三角
最近写了一个关于杨辉三角的代码,不过出了些问题
代码如下:
import javax.swing.JOptionPane;
public class San
{
  public static void main(String args[])
{
   String row;
   int row1;
   row=JOptionPane.showInputDialog("输入行数:");
   row1=Integer.parseInt(row);
   int ss[][]=new int[row1][];
   int i,j;
   ss[0][0]=ss[1][0]=ss[1][1]=1;
   for(i=3;i<row1;i++)
   {
    ss[i][0]=ss[i][i-1]=1;
    for(j=0;j<i-1;j++)
    {
      ss[i][j]=ss[i-1][j]+ss[i-1][j+1];
    }
   }
   for(i=0;i<row1;i++)
  {
   for(j=0;j<i-1;j++)
  {
   System.out.print(ss[i][j]);
   }
   System.out.println();
   }
   System.exit(0);
}
}
运行结果如下:
Exception in thread "main" java.lang.NullPointerException
        at San.main(San.java:12)
另外还有一个问题:如果成功更改的话,杨辉三角会以直角三角形的方式输出,但是如果要用等腰三角形输出呢,能不能把其中的重要部分写一下,谢谢帮助。
搜索更多相关主题的帖子: 杨辉三角 java 
2010-03-25 20:46
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:5 
import javax.swing.JOptionPane;
public class San
{
  public static void main(String args[])
{
   String row;
   int row1;
   row=JOptionPane.showInputDialog("输入行数:");
   row1=Integer.parseInt(row);
   int ss[][]=new int[row1][row1];  //二维数组要分配内存空间,否则空指针异常
   int i,j;
   ss[0][0]=ss[1][0]=ss[1][1]=1;
   for(i=3;i<row1;i++)
   {
    ss[i][0]=ss[i][i-1]=1;
    for(j=0;j<i-1;j++)
    {
      ss[i][j]=ss[i-1][j]+ss[i-1][j+1];
    }
   }
   for(i=0;i<row1;i++)
  {
   for(j=0;j<i-1;j++)
  {
   System.out.print(ss[i][j]);
   }
   System.out.println();
   }
   System.exit(0);
}
}

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-03-25 21:16
dadongzicool
Rank: 6Rank: 6
等 级:贵宾
威 望:11
帖 子:209
专家分:474
注 册:2009-3-20
收藏
得分:5 
package cn.dadongzicool.examplesanjiao;

import javax.swing.JOptionPane;

public class San {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
           String rowString;
           int rowInt;
           
           rowString = JOptionPane.showInputDialog("输入行数:");
           rowInt = Integer.parseInt(rowString);
           
           int triangle[][]=new int[rowInt][rowInt * 2 - 1];
           
           for(int i = 0;i < rowInt;i++){
                  for(int j = 0;j < rowInt * 2 -1;j++){
                      triangle[i][j] = -1;
                  }
              }
           
           for(int i = 0;i < rowInt;i++){
               triangle[(rowInt * 2 - 1) / 2 - i][i] = 1;
               triangle[(rowInt * 2 - 1) / 2 - i][rowInt * 2 - 1 - i - 1] = 1;
           }
           
           for(int i = 2;i < rowInt;i++){
                  for(int j = 0;j < rowInt * 2 -1;j++){
                      if(j > rowInt - i - 1 && j < rowInt * 2 - 1 - 1
                              && triangle[i - 1][j -1] != -1 && triangle[i -1][j + 1] != -1)
                      triangle[i][j] = triangle[i - 1][j -1] + triangle[i -1][j + 1];
                  }
           }
           
          for(int i = 0;i < rowInt;i++){
              for(int j = 0;j < rowInt * 2 - 1;j++){
                  if(triangle[i][j] == -1){
                      System.out.print(" ");
                  }
                  else{
                      System.out.print(triangle[i][j]);
                  }
              }
              System.out.println();
          }
           System.exit(0);

    }

}

自己写了一下  还是不太完美   五行以内还能凑合着看   因为行数越多 数字占用的字节越多 用一个空格来区分就有点小了


效果如下

row = 5:
    1   
   1 1   
  1 2 1  
 1 3 3 1
1 4 6 4 1

row = 6:
     1     
    1 1   
   1 2 1   
  1 3 3 1  
 1 4 6 4 1
1 5 10 10 5 1


row = 10:
         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  
 1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1


row = 20:
                   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            
           1 8 28 56 70 56 28 8 1           
          1 9 36 84 126 126 84 36 9 1         
         1 10 45 120 210 252 210 120 45 10 1         
        1 11 55 165 330 462 462 330 165 55 11 1        
       1 12 66 220 495 792 924 792 495 220 66 12 1      
      1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1      
     1 14 91 364 1001 2002 3003 3432 3003 2002 1001 364 91 14 1     
    1 15 105 455 1365 3003 5005 6435 6435 5005 3003 1365 455 105 15 1   
   1 16 120 560 1820 4368 8008 11440 12870 11440 8008 4368 1820 560 120 16 1   
  1 17 136 680 2380 6188 12376 19448 24310 24310 19448 12376 6188 2380 680 136 17 1  
 1 18 153 816 3060 8568 18564 31824 43758 48620 43758 31824 18564 8568 3060 816 153 18 1
1 19 171 969 3876 11628 27132 50388 75582 92378 92378 75582 50388 27132 11628 3876 969 171 19 1


本人出售软件专业毕业设计(包括论文,代码)题目众多,价格从优联系方式:QQ
1635008514(寻找高校代理)
2010-03-26 00:44
dadongzicool
Rank: 6Rank: 6
等 级:贵宾
威 望:11
帖 子:209
专家分:474
注 册:2009-3-20
收藏
得分:0 
回复完了 发现最后一行 有点偏移  实际上运行效果没有偏移的  不知道为什么回复后 就有了一个空格的偏移

本人出售软件专业毕业设计(包括论文,代码)题目众多,价格从优联系方式:QQ
1635008514(寻找高校代理)
2010-03-26 00:46
hanxingxing
Rank: 1
等 级:新手上路
帖 子:26
专家分:9
注 册:2010-3-14
收藏
得分:0 
回复 4楼 dadongzicool
谢谢,其实是没有偏移的,不过,因为有的行有两个两位数,而下一行三个两位数,故此多了一位;因此下面的行都有这样后果,因而显得偏移了一行,不知道我解释的对不对。

我相信每个人都是独立的存在,了解并相信自己才是对自己负责任!
2010-03-26 20:54
hanxingxing
Rank: 1
等 级:新手上路
帖 子:26
专家分:9
注 册:2010-3-14
收藏
得分:0 
回复 4楼 dadongzicool
版主,问一下,java里面有没有一个函数或类能限制“输出数”以几个格输出。

我相信每个人都是独立的存在,了解并相信自己才是对自己负责任!
2010-03-27 09:40
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:0 
import javax.swing.JOptionPane;
import *;

public class San {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
           String rowString;
           int rowInt;
           
           rowString = JOptionPane.showInputDialog("lines:");
           rowInt = Integer.parseInt(rowString);
           
           int triangle[][]=new int[rowInt][rowInt * 2 - 1];
           
           for(int i = 0;i < rowInt;i++){
                  for(int j = 0;j < rowInt * 2 -1;j++){
                      triangle[i][j] = -1;
                  }
              }
           
           for(int i = 0;i < rowInt;i++){
               triangle[(rowInt * 2 - 1) / 2 - i][i] = 1;
               triangle[(rowInt * 2 - 1) / 2 - i][rowInt * 2 - 1 - i - 1] = 1;
           }
           
           for(int i = 2;i < rowInt;i++){
                  for(int j = 0;j < rowInt * 2 -1;j++){
                      if(j > rowInt - i - 1 && j < rowInt * 2 - 1 - 1
                              && triangle[i - 1][j -1] != -1 && triangle[i -1][j + 1] != -1)
                      triangle[i][j] = triangle[i - 1][j -1] + triangle[i -1][j + 1];
                  }
           }
           
          for(int i = 0;i < rowInt;i++){
              for(int j = 0;j < rowInt * 2 - 1;j++){
                  if(triangle[i][j] == -1){
                      System.out.printf("%3s"," ");   //用printf方法以3个格输出字符串
                  }
                  else{
                      System.out.printf("%3d",triangle[i][j]); //用printf方法以3个格输出数字

                  }
              }
              System.out.println();
          }
           System.exit(0);

    }

}

[ 本帖最后由 lampeter123 于 2010-3-27 11:05 编辑 ]

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-03-27 10:56
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:0 
printf()是JDK5.0以后才加入的,用法类似于C语言

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-03-27 10:58
dadongzicool
Rank: 6Rank: 6
等 级:贵宾
威 望:11
帖 子:209
专家分:474
注 册:2009-3-20
收藏
得分:0 
回复 7楼 lampeter123
貌似稍微规则了一点 但是 行数很多的时候......

本人出售软件专业毕业设计(包括论文,代码)题目众多,价格从优联系方式:QQ
1635008514(寻找高校代理)
2010-03-27 11:25
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:0 
你可的控制输出的格数,如果是2位数就输出2格,3位3格,4位4格。。。。
行数太多的话,你的屏幕都爆满了

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-03-27 11:27
快速回复:java 杨辉三角
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.085961 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved