我把multi的返回值类型改成void去掉return.为什么就不越界呢??
急切想知道!谢谢 返回值为int的multi函数放在main中就是一个数.这个数multi(a,b,c)被孤零零的放在那里,没有对它做运算和其它处理.当然是错误的啦!!!!!!!!!! 好像有返回值的函数也可以不使用其返回值吧 Java的语法规定比C++要严格,有返回类型的函数必须有返回值的。
检查一下你的代码吧,也许在运行的时候某个下标越界了。 这个程序不抛出ArrayIndexOutOfBoundsException才怪呢。
public class Matrix
{
public static void main(String arg[])
{
int a[][]={{2,2,3},{4,5,6},{7,8,9}};
int b[][]={{7,8,9},{4,5,6},{1,2,3}};
int H=a.length,K=b.length;
int c[][]=new int ;
multi(a,b,c);
for(int m=0;m<a.length;m++)
{
for(int n=0;n<b.length;n++)
System.out.print(c+"");
System.out.println();
}
}
public static int multi(int x[][],int y[][],int z[][])
{
int i=0,k=0,j=0;
for(i=0;i<x.length;i++)
for(j=0;j<y.length;j++)
for(k=0;k<y.length;k++)
z[ i]+=x[ i]*y;
//在这里,i=x.length,j=y.length,k=y.length
return z[ i]+=x[ i]*y; //越界就发生在这里!!
}
} 了解!
求助
public class Matrix{
public static void main(String arg[])
{
int a[][]={{2,2,3},{4,5,6},{7,8,9}};
int b[][]={{7,8,9},{4,5,6},{1,2,3}};
int H=a.length,K=b.length;
int c[][]=new int ;
multi(a,b,c);
for(int m=0;m<a.length;m++)
{
for(int n=0;n<b.length;n++)
System.out.print(c+" ");
System.out.println();
}
}
public static int multi(int x[][],int y[][],int z[][])
{
int i=0,k=0,j=0;
for(i=0;i<x.length;i++)
for(j=0;j<y.length;j++)
for(k=0;k<y.length;k++)
z[ i]+=x[ i]*y;
returnz[ i]+=x[ i]*y;
}
问问上面的代码为什么错了:?
我把函数 multi的返回值类型改为void然后去掉return那行就是正确的了!
页:
[1]