Java 每当我的列大于行时获取越界异常
我一直在用我的密码把头撞在墙上。我最终得到了我的代码,允许我根据用户需要的行数和列数输入任何数字,但由于某种原因,每当我尝试输入比行数大的列数时,我都会出错。我已经读了几十遍我的循环,在我认为程序计数过多的地方插入-1,但它仍然不起作用。我假设当多维数组完全依赖于用户时,这是编写多维数组的合适方法,但如果不是,请告诉我如何使代码更高效。谢谢Java 每当我的列大于行时获取越界异常,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我一直在用我的密码把头撞在墙上。我最终得到了我的代码,允许我根据用户需要的行数和列数输入任何数字,但由于某种原因,每当我尝试输入比行数大的列数时,我都会出错。我已经读了几十遍我的循环,在我认为程序计数过多的地方插入-1,但它仍然不起作用。我假设当多维数组完全依赖于用户时,这是编写多维数组的合适方法,但如果不是,请告诉我如何使代码更高效。谢谢 public class MultiPractice { public static void main(String[] args) {
public class MultiPractice {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// Prompts user to insert desired rows and columns
System.out.print("Enter how many rows you want in your array: ");
int rowSize = input.nextInt();
System.out.print("Enter hwo many columns you want in your array: ");
int colSize = input.nextInt();
// Asks users to insert desired numbers for the multi-array
System.out.print("Enter " + (rowSize*colSize) + " integers: ");
// Creates the multidimensional array
int[][] multi = new int[rowSize][colSize];
// Runs the for loop to put numbers where they belong in array
for (int i = 0; i < multi.length; i++) {
for (int j = 0; j < multi[colSize].length; j++) {
multi[i][j] = input.nextInt();
System.out.print(multi[i][j] + " ");
}
System.out.println();
}
}
}
公共类多重实践{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
//提示用户插入所需的行和列
System.out.print(“输入数组中所需的行数:”;
int rowSize=input.nextInt();
System.out.print(“在数组中输入所需的列:”);
int colSize=input.nextInt();
//要求用户为多重数组插入所需的数字
System.out.print(“输入”+(rowSize*colSize)+“整数:”;
//创建多维数组
int[]multi=新int[rowSize][colSize];
//运行for循环以将数字放入数组中它们所属的位置
for(int i=0;i
multi[colSize].length
应该是multi[0]。length
或multi[i]。length
(因为您有一个矩形数组,所以它们的值相同)
multi[colSize]。length
是行的长度colSize
。因此,如果您的行数小于colSize+1
行(因为它们从0开始),这就超出了范围。是.length把您搞得一团糟。Multi[colSize]。长度与colSize不同;事实上,它是colSize+1(因为长度从1开始计算)
我的解决方案:您可以使用
i
而不是使用multi.length
。您还可以将多[colSize]
与
交换,谢谢!这是完全有道理的,我只是在多维数组中找到好的材料有很多困难。