Как прочитать целые числа из файла .txt, который содержит 2-D массив, я получаю java.util.Исключение InputMismatchException

#java #java.util.scanner #inputmismatchexception

#java #java.util.scanner #исключение inputmismatchexception

Вопрос:

поэтому мне нужно прочитать матрицу из файла .txt, который имеет формат, указанный ниже.

 problemMatrix = [[101, 2, 3, 4, 5, 6, 7, 8, 9, 10], [11, 12, 13, 14, 15, 16, 17, 18, 19, 20], [21, 22, 23, 24, 25, 26, 27, 28, 29, 30], [31, 32, 33, 34, 35, 36, 37, 38, 9, 40], [41, 42, 43, 44, 45, 46, 47, 28, 49, 50], [51, 52, 53, 54, 55, 56, 57, 58, 59, 60], [61, 62, 63, 64, 65, 66, 67, 68, 69, 70], [71, 72, 73, 7, 75, 76, 77, 78, 79, 80], [81, 82, 83, 84, 85, 86, 87, 88, 89, 90], [91, 92, 93, 94, 95, 96, 97, 98, 99, 100]]
  

я уже написал код для вычисления строк и столбцов. Я написал этот код, чтобы получить целочисленное значение в индексе [i] [j] .

     int [][] input= new int[rows][cols]; 
    matrix = new Scanner(new File("test.txt"));
    matrix.useDelimiter("[ ,rnt=]");
    try{    
        for(int i=0; i<rows; i  ){
            for(int j = 0;j<cols;j  ){
                input[i][j]=matrix.nextInt();
                System.out.print(input[i][j]   " ");
            }
            System.out.println();

            }   
    }
    catch(InputMismatchException e){
        System.out.println(e);
    }
  

но это дает мне исключение InputMismatchException . Любые предложения. Я не понимаю, как изменить разделители для scanner.
Спасибо.

Комментарии:

1. поделиться содержимым text.txt

2. Существует ли «problemMatrix = » в вашем txt-файле? Если да, то оно не соответствует регулярному выражению, которое вы указали, отсюда и исключение. Попробуйте прочитать это docs.oracle.com/javase/7/docs/api/java/util /…

3. да, матрица, которую я привел выше, взята из test.txt и он содержит проблемную матрицу

Ответ №1:

Я думаю, что проблема в вашем регулярном выражении. Регулярное выражение [ ,rnt=] означает «соответствует любому из , r , n , t или = . Обратите внимание, что он НЕ будет соответствовать [ или ] .

Вы должны включить оба [ и ] внутри своих квадратных скобок и убедиться, что они экранированы, и это должно помочь. У вас также может возникнуть проблема с несколькими разделителями, приводящая к тому, что ваш сканер пытается проанализировать пустую строку, поэтому вы захотите, чтобы ваше регулярное выражение совпадало с несколькими из этих символов вместе.

Комментарии:

1. я использовал matrix.useDelimiter("[^0-9] "); после прочтения дополнительной информации о регулярных выражениях. спасибо за помощь Джо С.