| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 895 人关注过本帖
标题:[求助]杨辉三角程序,怎么运行不了?
只看楼主 加入收藏
闯城狼
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2006-3-27
收藏
 问题点数:0 回复次数:8 
[求助]杨辉三角程序,怎么运行不了?
杨辉三角程序,编译通过了,但运行不了.

public class yanghui
{
public static void main(String args[])
{
int[][] nyanghui=new int[10][];
for(int i=0;i<nyanghui.length;i++)
{
for(int j=0;j<i;j++)
{
if(j==0 || j==i)
nyanghui[i][j]=1;
else
nyanghui[i][j]=nyanghui[i-1][j-1]+nyanghui[i-1][j];
}
}
for(int i=0;i<nyanghui.length;i++)
{
for(int j=0;j<nyanghui[i].length;j++)
{
System.out.println(nyanghui[i][j]);
}
}
}
}
谢了.
搜索更多相关主题的帖子: 杨辉三角 运行 
2006-03-29 22:32
daydayf
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-3-27
收藏
得分:0 
我来说几句.

public class yanghui
{
public static void main(String args[])
{
int[][] nyanghui=new int[10][];
for(int i=0;i<nyanghui.length;i++)
{
for(int j=0;j<i;j++)
{
if(j==0 || j==i)
nyanghui[i][j]=1;
else
nyanghui[i][j]=nyanghui[i-1][j-1]+nyanghui[i-1[j]; /*按此公式,我们知当i=0,j=1不属于if的判定条件,故按else语句执行,这样就是nyanghui[0][1]=nyanghui[-1][0]+nyanghui[-1][1],显然出现了数组下标溢出问题,即nyanghui[0][1]无法求解出,所以无法运行此程序*/
}
}
for(int i=0;i<nyanghui.length;i++)
{
for(int j=0;j<nyanghui[i].length;j++)
{
System.out.println(nyanghui[i][j]);
}
}
}
}

这里我想问一下,杨辉三角到底目的是要我们输出什么样的图形.
2006-03-30 08:09
myfor
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:357
专家分:6
注 册:2006-3-13
收藏
得分:0 
1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
...
如此

广告位招租
2006-03-30 08:28
daydayf
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-3-27
收藏
得分:0 
按你的意思是a[1][1]等于2了,而一楼的程序好象要将a[1][1]生成1,也不知道你们谁的对,哪个大哥再进来肯定一下
2006-03-30 10:44
daydayf
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-3-27
收藏
得分:0 

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
................................

这样?

2006-03-30 11:08
daydayf
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-3-27
收藏
得分:0 

不好意思,我前面搞错了,没有看清楚程序

一楼的程序不存在我说的情况(因为i<j);

上面的程序之所以不能运行,却能通过编译,

是由于:

程序虽然为整个二维数组分配了空间,

却没有为二维数组里的每一个一维数组分配空间

因为此处每一个一维数组的长度是不一样的

所以我们必须动态的为每一个一维数组分配空间

下面将程序改写为


public class Yanghui
{
public static void main(String args[])
{
int nyanghui[][]=new int[10][];
for(int i=0;i<nyanghui.length;i++)
{ nyanghui[i]=new int[i+1]; //动态为每一个一维数组分配空间
for(int j=0;j<=i;j++)
{
if(j==0||j==i)
nyanghui[i][j]=1;
else
nyanghui[i][j]=nyanghui[i-1][j-1]+nyanghui[i-1][j];
System.out.print(" "+nyanghui[i][j]); //此出不换行
}
System.out.println(); //内循环技术,执行换行
}}}

上面我将程序的后半部分循环给删除了,因为那只会增加系统地开销,当然也可以那样写,
不过输出语句一定要改,我们要在适当的时候换行,而不是每输出一个数组原素就换行.

输出地效果还是不好,如果能像C语言那样格式化输出(比方说我们让每一个数组元素地长度为6,不足前导空格)就好多了

2006-03-30 14:18
daydayf
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-3-27
收藏
得分:0 
上面打错字了
System.out.println(); //内循环技术,执行换行
我要说的是"内部循环结束"


2006-03-30 15:26
闯城狼
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2006-3-27
收藏
得分:0 
谢谢daydayf!!!
2006-03-30 21:02
梁间燕子
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-3-28
收藏
得分:0 

// 据说jdk1.5增加了自动装包/拆包(Autoboxing/unboxing)功能,或许可以这样写。

int n=10;
ArrayList c = new ArrayList();
for(int i=0;i<n;i++)
{
c.add(0,1);
System.out.print(1);
for(int j=1;j<i-1;j++)
{
int value=c.get(j)+c.get(j+1);
c.set(j,value);
System.out.print(value);
}
if(i!=0)
System.out.print(1);
System.out.println();
}

2006-03-31 17:35
快速回复:[求助]杨辉三角程序,怎么运行不了?
数据加载中...
 
   



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

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