Ошибка при передаче файла .txt в массив (исключение потока) - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь передать текстовый файл, в котором говорится: «Это был яркий холодный день в апреле, и часы били тринадцать», - в двумерный массив. Он должен заполнять все неиспользуемые пробелы в двумерном массиве символом *. Но когда я запускаю эту программу, я получаю сообщение об ошибке «Исключение в потоке» main »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));
         }
    }
    }   
    }

Ошибка:

"Исключение в потоке" main "java.lang.ArrayIndexOutOfBoundsException: 6 at TwoDArray.main (TwoDArray.java:24)"

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019
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++;
    } // I dont see what text you putting in the buffer, but try get i back to zero like:
       i = 0;

                    else {chars[r][c] = '*';
                    }
                }
            }
            for (char[] x : chars) {
                System.out.println(Arrays.toString(x));
         }
    }
    }   
    }
0 голосов
/ 04 ноября 2019

Не совсем уверен, что вы здесь делаете, но не должен

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

быть

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

Я ожидаю, что это ваша проблема.

...