Java .charAt()上的边界外异常,正在查找解释 public static void getImage()引发FileNotFoundException { 扫描仪输入=新扫描仪(新文件(文件名)); String元素=input.nextLine()// //用“”作为分隔符标记字符串 StringTokenizer标记器=新的StringTokenizer(元素“”); //存储y和x变量 imageHeight=Integer.parseInt(tokenizer.nextToken()); imageWidth=Integer.parseInt(tokenizer.nextToken()); 系统输出打印LN(图像高度); System.out.println(图像宽度); 缓冲区=新字符[100][100]; System.out.println(“获取图像…”); 对于(int i=0;i

Java .charAt()上的边界外异常,正在查找解释 public static void getImage()引发FileNotFoundException { 扫描仪输入=新扫描仪(新文件(文件名)); String元素=input.nextLine()// //用“”作为分隔符标记字符串 StringTokenizer标记器=新的StringTokenizer(元素“”); //存储y和x变量 imageHeight=Integer.parseInt(tokenizer.nextToken()); imageWidth=Integer.parseInt(tokenizer.nextToken()); 系统输出打印LN(图像高度); System.out.println(图像宽度); 缓冲区=新字符[100][100]; System.out.println(“获取图像…”); 对于(int i=0;i,java,arrays,indexoutofboundsexception,Java,Arrays,Indexoutofboundsexception,整个代码可以编译,但上面是整个代码的一部分,当我运行它时,它给了我错误。代码的目标是创建一个多维数组,当打印时,它会在文本文件中显示由字符组成的图像。它通过解析指定的.txt文件来获取索引。前2个读取标记是定义数组大小的数字。然后它继续读取.txt文件,并在原始文本文件中的位置将字符分配给数组,最终创建由字符组成的图像 这部分代码应该将文件中的所有字符都放入数组中,但我遇到了运行错误。请帮忙 您试图在空位置获取字符。请在访问特定位置(j)之前添加一些验证 element.lenght()>0您的

整个代码可以编译,但上面是整个代码的一部分,当我运行它时,它给了我错误。代码的目标是创建一个多维数组,当打印时,它会在文本文件中显示由字符组成的图像。它通过解析指定的.txt文件来获取索引。前2个读取标记是定义数组大小的数字。然后它继续读取.txt文件,并在原始文本文件中的位置将字符分配给数组,最终创建由字符组成的图像


这部分代码应该将文件中的所有字符都放入数组中,但我遇到了运行错误。请帮忙

您试图在空位置获取字符。请在访问特定位置(j)之前添加一些验证


element.lenght()>0

您的基本假设是
element
的长度与
imageWidth
的长度相同-添加调试打印以测试此假设是否正确;)当imageWidth大于元素字符时,可能会发生这种情况。您可以显示用于计算imageWidth的代码吗?我在前面添加了代码。获取imageWidth大小的方法是读取用户之前指定的.txt文件中的第二个数字。我发现了错误。它不是在编码中,而是在我的.txt文件中,该文件在数组的最后一点上有一个空字符,而它应该是一个空格。谢谢大家!你的建议影响了我查看文件!
public  static void getImage() throws FileNotFoundException
{
    Scanner input = new Scanner(new File(fileName));
    String element = input.nextLine( );//

    // tokenize string with " " as the delimiter
    StringTokenizer tokenizer = new StringTokenizer( element, " " );

    // store y and x variables
    imageHeight = Integer.parseInt( tokenizer.nextToken( ) );
    imageWidth = Integer.parseInt( tokenizer.nextToken( ) );
    System.out.println(imageHeight);
    System.out.println(imageWidth);

    buffer = new char[100] [100];
    System.out.println( "Getting Image ..." ); 


for ( int i = 0; i < imageHeight; i++ ) 
{ 

    element = input.nextLine();
    for ( int j = 0; j < imageWidth; j++ ) 
    {

    buffer[i][j] = element.charAt(j);

    }

}

    input.close( );

}