首页 > 解决方案 > 将 .txt 文件传输到数组时出错(线程异常)

问题描述

我正在尝试将一个文本文件传输到一个二维数组,上面写着“四月是一个寒冷的日子,时钟敲了十三下”。它应该用“*”字符填充二维数组中任何未使用的空格。但是当我运行这个程序时,我收到一条错误消息,指出“线程“主”java.lang.ArrayIndexOutOfBoundsException: 6 at TwoDArray.main(TwoDArray.java:24) 中的异常”如何解决这个错误?

import java.io.FileNotFoundException;
import java.util.*;

public class TwoDArray {

    public static void main(String[] args) throws FileNotFoundException {
        java.io.File file = new java.io.File("2DArray.txt");

        Scanner input = new Scanner(file);
        int totalRow = 6;
        int totalColumn = 7;
        char[][] chars = new char[totalRow][totalColumn];

            while (input.hasNext()) {
            String word = input.next();
            char[] words = word.toCharArray();
            int i = 0;
            for (int r = 0; r < words.length; r++) {
                for (int c = 0; c < totalColumn; c++) {
                    if (i < words.length) {
                        chars[r][c] = words[i] == ' ' ? '+' : words[i];
                        i++;
    } 
                    else {chars[r][c] = '*';
                    }
                }
            }
            for (char[] x : chars) {
                System.out.println(Arrays.toString(x));
         }
    }
    }   
    }

错误是:

“线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:TwoDArray.main 中的 6(TwoDArray.java:24)”

标签: javaarraystext-files

解决方案


不完全确定你在这里做什么,但不应该

        for (int r = 0; r < words.length; r++) {

        for (int r = 0; r < totalRow; r++) {

我希望那是你的问题。


推荐阅读