Java 标量乘法-数组索引超出界限异常 公共静态int[][]scalarMultiplication(int[][]A,int num){ int[]arrayScalarMul=new int[A.length][A[0].length]; for(int x=0;x
正如标题所说,我得到了一个Java 标量乘法-数组索引超出界限异常 公共静态int[][]scalarMultiplication(int[][]A,int num){ int[]arrayScalarMul=new int[A.length][A[0].length]; for(int x=0;x,java,exception,indexoutofboundsexception,Java,Exception,Indexoutofboundsexception,正如标题所说,我得到了一个ArrayIndexOutOfBoundsException错误,我看到一些人通过将长度缩短1来修复它,我只是不明白为什么需要这样做 public static int[][] scalarMultiplication(int[][] A,int num) { int[][] arrayScalarMul = new int[A.length][A[0].length]; for (int x=0; x < arrayScalarMul.leng
ArrayIndexOutOfBoundsException
错误,我看到一些人通过将长度缩短1来修复它,我只是不明白为什么需要这样做
public static int[][] scalarMultiplication(int[][] A,int num) {
int[][] arrayScalarMul = new int[A.length][A[0].length];
for (int x=0; x < arrayScalarMul.length; x++) {
for (int y=0; y < arrayScalarMul[x].length; y++) {
arrayScalarMul[x][y] = A[x * num][y * num];
}
}
return arrayScalarMul;
}
换成
arrayScalarMul[x][y] = A[x * num][y * num];
将索引与给定标量相乘,但应与该索引上的值相乘
换成
arrayScalarMul[x][y] = A[x * num][y * num];
将索引与给定标量相乘,但应与该索引上的值相乘。错误是由于 arrayScalarMul[x][y]=A[x*num][y*num] 当num与x(或y)相乘时,它将超出界限
index-1终止通常用于防止“off by 1错误”,因为您有一个基于0的数组,所以大小为n的数组实际上具有介于0和n-1之间的有效索引。因此,我们要么使用
num
在这里是可变的
if(x*num - totalx) && (y*num - totaly)
A[x][y] = A[x*num][y*num];
它产生java.lang.ArrayIndexOutOfBoundsException
。这里*x*num*和y*num*超出了数组索引的范围 长度缩短1也不起作用,因为此处的num
是可变的
if(x*num - totalx) && (y*num - totaly)
A[x][y] = A[x*num][y*num];
它产生
java.lang.ArrayIndexOutOfBoundsException
。这里*x*num*和y*num*超出了数组索引的范围 当然,x*num
或y*num
不是[总是]有效的索引。。阅读异常。我喜欢例外。这不是谎言。这个问题“过于本地化”,但希望这些答案能为解决这个问题提供一些思路。。然后希望这个问题被关闭/删除。当然x*num
或y*num
不是[总是]有效的索引。。阅读异常。我喜欢例外。这不是谎言。这个问题“过于本地化”,但希望这些答案能为解决这个问题提供一些思路。。然后希望这个问题被关闭/删除。这不是一个假设,即最初的意图是将每个索引值乘以num吗?我以为他想访问一个[xnum][ynum],前提是它是一个有效的索引并使用该值?标量乘法
不能这样工作。基于标题,我会说我的假设是正确的。呃-是的。有道理。我没有把重点放在这一点上,这不是一个假设,即最初的意图是将每个索引值乘以num吗?我以为他想访问一个[xnum][ynum],前提是它是一个有效的索引并使用该值?标量乘法
不能这样工作。基于标题,我会说我的假设是正确的。呃-是的。有道理。我没有把重点放在那上面