java 函数怎么返回二维数组(改一下我的代码)
哪里错,怎么改,为什么。publicclassf4{publicstaticint[][]f(inta[][],intb[][],intans[][]){ans[0][0...
哪里错,怎么改,为什么。
public class f4
{
public static int[][] f(int a[][],int b[][],int ans[][])
{
ans[0][0]=a[0][0]*b[0][0]+a[0][1]*b[1][0];
ans[1][0]=a[1][0]*b[0][0]+a[1][1]*b[1][0];
ans[0][1]=a[0][0]*b[0][1]+a[0][1]*b[1][1];
ans[1][1]=a[1][0]*b[0][1]+a[1][1]*b[1][1];
return ans;
}
public static void main(String[] args)
{
int[][] a = {{0,1},{1,1}};
int[][] b = {{0,1},{1,1}};
int[][] ans =new int[1][1];
f(a,b,ans);
}
} 展开
public class f4
{
public static int[][] f(int a[][],int b[][],int ans[][])
{
ans[0][0]=a[0][0]*b[0][0]+a[0][1]*b[1][0];
ans[1][0]=a[1][0]*b[0][0]+a[1][1]*b[1][0];
ans[0][1]=a[0][0]*b[0][1]+a[0][1]*b[1][1];
ans[1][1]=a[1][0]*b[0][1]+a[1][1]*b[1][1];
return ans;
}
public static void main(String[] args)
{
int[][] a = {{0,1},{1,1}};
int[][] b = {{0,1},{1,1}};
int[][] ans =new int[1][1];
f(a,b,ans);
}
} 展开
4个回答
展开全部
数组越界了,换成这个
int[][] ans = new int[2][2];
关于接收,
由于java是值传递,那么你在调用了f方法后,可以直接操作ans,你看看前后的变化
System.out.println(Arrays.deepToString(ans));
f(a, b, ans);
System.out.println(Arrays.deepToString(ans));
如果你非要接收,也可以
System.out.println(Arrays.deepToString(ans));
ans = f(a, b, ans);
System.out.println(Arrays.deepToString(ans));
两者效果是一样的
展开全部
// java.lang.ArrayIndexOutOfBoundsException
int[][] ans =new int[2][2]; // 数组不够大
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你数组长度错了:int[][] ans =new int[2][2];
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
u need to initialize a and b in your main. (ie. allocate memory for variable a and b)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询