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之间的有效索引。因此,我们要么使用 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],前提是它是一个有效的索引并使用该值?
标量乘法
不能这样工作。基于标题,我会说我的假设是正确的。呃-是的。有道理。我没有把重点放在那上面