Получение ошибки несоответствия входных данных при попытке прочитать целое число из файла и сохранить его в переменной

#java #file #io

#java #файл #io

Вопрос:

 public static Matrix read(String filename) {
        
            Scanner scan = new Scanner(filename);
            int row = scan.nextInt();
            int column = scan.nextInt();
            
            Matrix mat = new Matrix(row, column);
            
            scan.nextLine();
            
            for(int i=0; i<row; i  ) {
                for(int j=0; j<column; j  ) {
                    mat.setElement(i, j, scan.nextInt());
                }
                scan.nextLine();
            }
            
            scan.close();
            
            return mat;
        
    }
  

В настоящее время это мой метод чтения текстового файла. Каждый текстовый файл имеет размеры матрицы, записанные вверху, а затем строки матрицы ниже. Пример:

 2 3
1 1 1
2 2 2
  

Когда я пытаюсь сохранить первые 2 числа в первой строке в качестве индексов строки и столбца, я получаю исключение несоответствия входных данных.

Ответ №1:

Вероятная причина вашей проблемы

Всякий раз, когда вы принимаете входные данные от пользователя, используя класс сканера. Если переданные входные данные не соответствуют методу или выдается исключение InputMismatchException. Например, если вы читаете целочисленные данные, используя метод nextInt(), а затем передаете значение в строке, возникает исключение.

Обработка исключения несоответствия входных данных

Единственный способ обработать это исключение — убедиться, что вы вводите правильные значения при передаче входных данных. Рекомендуется указывать требуемые значения с полной детализацией при чтении данных от пользователя с помощью класса scanner.

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

1. Ах, теперь я вижу, что мои числа в файле представлены в строковом формате. Есть ли какой-либо способ получить их в целочисленном формате?

2. Если вы уверены, что сканер выдает вам string вместо number, попробуйте прочитать его как строку «scan.next()» вместо int, затем вы можете разобрать его в int в своем коде