标题:谁能改下错误
只看楼主
革革
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-8-7
 问题点数:0 回复次数:14 
谁能改下错误
刚刚学习JAVA
搜索更多相关主题的帖子: 学习 JAVA 
2007-08-08 12:41
革革
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-8-7
得分:0 

//import java.lang.*;
public class Yanghuisanjiao
{
public static void main(String args[])
{
int g[][]=new int[10][10];
int i;
int j;
for(i=0;i<10;i++)
{
g[i][0]=1;

for(j=0;j<=i;j++)
{
if(j=i)
g[i][j]=1;
else{

g[i][j]=g[i-1][j-1]+g[i-1][j];
}
}
System.out.println(" "+g[i][j]);
}
}
}

2007-08-08 12:42
袁小六
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2007-8-3
得分:0 

你的想法是好的,可是你这个算法不对,

for(j=0;j<=i;j++)
{
if(j=i)//这里写成if(j==i)
g[i][j]=1;
else{

g[i][j]=g[i-1][j-1]+g[i-1][j]; //这里会造成数组越界
}
}


這個丗堺還钚夠瘋誑~~~
2007-08-08 14:32
袁小六
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2007-8-3
得分:0 
给你重写了一个

public class Yanghuisanjiao {
public static void main (String[] args) {

int[][] a=new int[10][10];

for(int i=0;i<10;i++)
a[i][0]=a[i][i]=1;

for(int i=2;i<10;i++)
for(int j=1;j<=i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];

for(int i=0;i<10;i++){
for(int j=0;j<=i;j++)
System.out.format("%5d",a[i][j]);
System.out.println();
}

}

這個丗堺還钚夠瘋誑~~~
2007-08-08 15:19
革革
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-8-7
得分:0 
谢谢你啦,我会努力学的
2007-08-09 14:12
革革
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-8-7
得分:0 
为什么会出现越界啊?如果用我的方法怎么才能让数组不越界呢,能解释一下么
2007-08-09 14:23
袁小六
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2007-8-3
得分:0 
回复:(革革)为什么会出现越界啊?如果用我的方法怎...
你是想尽量用少的代码来实现,但是那样并不能提高效率,而且也使代码看起来非常混乱,极易出错。至于为何出错,主要是你想把赋值与输出一同实现而带来的越界的行为,你好好看看

這個丗堺還钚夠瘋誑~~~
2007-08-09 15:12
fxd1111359
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-8-9
得分:0 
我觉得你的思路也可,稍更改应该就行
public class Yanghuisanjiao
{
public static void main(String args[])
{
int g[][]=new int[10][10];
int i;
int j;
for(i=0;i<10;i++)
{
g[i][0]=1;
System.out.println(" "+g[i][0]);//输出每行第一个
for(j=1;j<=i;j++)//0位置都赋值了,再弄自然会溢出,从1开始就好了
{
if(j==i)
g[i][j]=1;
else{

g[i][j]=g[i-1][j-1]+g[i-1][j];
}
}
System.out.println(" "+g[i][j]);
}
}
}
2007-08-10 11:17
袁小六
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2007-8-3
得分:0 
回复:(fxd1111359)我觉得你的思路也可,稍更改应该...
不对

這個丗堺還钚夠瘋誑~~~
2007-08-10 11:56
fxd1111359
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-8-9
得分:0 
这回应该没问题,我试过编译了,刚才是他的括号太乱,没注意输出应在内循环里。
运行试试就知道对不对了。
public class Yanghuisanjiao
{
public static void main(String args[])
{
int g[][]=new int[10][10];
int i;
int j;
for(i=0;i<10;i++)
{
g[i][0]=1;
System.out.print(" "+g[i][0]);//输出每行第一个
for(j=1;j<=i;j++)//0位置都赋值了,再弄自然会溢出,从1开始就好了
{
if(j==i)
g[i][j]=1;
else
{
g[i][j]=g[i-1][j-1]+g[i-1][j];
}
System.out.print(" "+g[i][j]);
}
System.out.println();
}
}
}
2007-08-10 12:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-161192-1-1.html




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

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