gpt4 book ai didi

java - 矩阵中的 ArrayIndexOutOfBoundsException

转载 作者:行者123 更新时间:2023-12-01 18:37:51 24 4
gpt4 key购买 nike

我想打印一个大小为 (m+1 X n+1) 的矩阵,其中 m 和 n 是用户输入的两个字符串的长度。当我打印矩阵时,为什么会出现 ArrayIndexOutofBounds 异常?

import java.util.*;
import java.io.File;
public class Strings {

private static int alen ,blen;
int [][] matrix = new int[alen+1][blen+1];
public static void main(String[] args){

Strings String1 = new Strings();
String a,b;
System.out.println("Enter String a: ");
Scanner usrip = new Scanner(System.in);
a = usrip.next();
alen = a.length();
System.out.println("Enter String b: ");
b = usrip.next();
blen = b.length();
usrip.close();
System.out.println("Matrix size: " + alen + "X" + blen );
String1.printMatrix();
/*System.out.println("Execute populate method: ");
String1.populateMatrix();*/


}//end of main

public void printMatrix(){

for(int i=0;i<alen+1;i++)
{
for(int j=0;i<blen+1;j++)
{
System.out.print(matrix[i][j]);
}
}
}//end of printMatrix

示例运行:

Enter String a: 
apple
Enter String b:

java
Matrix size: 5X4
0Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Strings.printMatrix(Strings.java:38)
at Strings.main(Strings.java:25)

最佳答案

您太早创建了二维数组。用这一行:

int [][] matrix = new int[alen+1][blen+1];

alenblen 仍然是 0(它们的默认初始值),因此您创建了一个 1x1 矩阵。

main 中初始化 alenblen 之前不要创建它:

blen = b.length();
usrip.close();
// Now create it:
String1.matrix = new int[alen+1][blen+1];
System.out.println("Matrix size: " + alen + "X" + blen );

将此类初始化逻辑移至构造函数会更清晰。这样的构造函数将采用 alenblen 作为参数并在那里创建矩阵。

此外,此行看起来不正确,在循环 j 时检查 i:

for(int j=0;i<blen+1;j++)

尝试

for(int j=0;j<blen+1;j++)

关于java - 矩阵中的 ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21100881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com