下面的那个java小程序哪里出错了,请帮忙修改一下,还有知识点!

packageshuzhu;publicclassshuzhu{publicstaticvoidmain(Stringarg[]){intx[][]={{1,2,3,4,... package shuzhu;
public class shuzhu
{
public static void main(String arg[])
{
int x[][]={{1,2,3,4,6,7,},
{8,3,88,89,9,9},
{2,8,7,38,2,7},
{9,8,2,6,1,5},
{8,2,7,2,8,1},
{7,8,9,2,1,3}};
int y[][],k[][];
int i,j,m1,m2,z,r;
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
System.out.println(x[i][j]);
}
for(m1=0;m1<6;m1++)
{
m2=0;
if(x[m1][m2]>x[m1+1][m2])
{
y[m1][m2]=x[m1][m2];
x[m1][m2]=x[m1+1][m2];
x[m1+1][m2]=y[m1][m2];
}
System.out.println(x[m1][m2]);
}
for(z=1;z<=6;z++)
{
for(r=1;r<=5;r++)

System.out.println( x[z][r]);

}

}
}
展开
 我来答
xia635317478
2012-09-20
知道答主
回答量:21
采纳率:0%
帮助的人:10.7万
展开全部
首先,int y[][],k[][]这种定义是错的,后面不能使用,看你的代码后面只是两个数的交换,所以随便定义一个int变量就可以了;
还有,在你的第三个for循环中,已经有x[m1+1],所以上面的m1必须<5,不能使6;
最后一个双重循环,都是从0开始,到5结束。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gdme1320
2012-09-20
知道答主
回答量:32
采纳率:0%
帮助的人:18万
展开全部
y用作交换的临时变量,就不需要定义为数组类型,数组k从未使用。最后
for(z=1;z<=6;z++)
{
...

输出数组下标越界。改为<。
还有程序的功能是气泡排序吗,如果是,程序没有实现此功能。
把这些代码放eclipse下就知道错误了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我爱李沛霞
2012-09-20 · TA获得超过896个赞
知道小有建树答主
回答量:385
采纳率:100%
帮助的人:165万
展开全部
关键就两个问题,一个是数组y没有实例化就使用了。二是数组越界异常。首先if(x[m1][m2]>x[m1+1][m2])这个地方,如果上面循环m1=5。x[m1+1][m2]越界。还有最后的System.out.println( x[z][r]);z循环为6的时候,System.out.println( x[z][r]);越界异常。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Grape泡沫馨
2012-09-20
知道答主
回答量:36
采纳率:0%
帮助的人:15万
展开全部
1、 int y[][]没有初始化,我建议是int y[][]=x,因为你下面是x与y做比较;
2、数组越界;
要注意,二维数组的下标是从0开始的。所以个数总的为5,6是不对的,会导致越界。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qqa1acc
2012-09-20
知道答主
回答量:3
采纳率:0%
帮助的人:4721
展开全部
数组长度为6,m1=5时(第六个元素), m1+1越界了
第3个for循环也有这问题。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式