Чтение чисел из файла и сохранение в 2d-массив

#java #arrays #filereader

#java #массивы #filereader

Вопрос:

Итак, я пытаюсь прочитать и сохранить данные в 2d-массив из файла, который содержит эти данные: 001 012 023 102 113 124 203 214 225 ( Где 001 — означает строку / столбец / значение), поэтому я могу прочитать его, но не могу понять, как сохранить его в массив

 int [][] arr = new int[3][3];
File file = new File("file.txt");
try(
    FileReader myFile = new FileReader(file);
    BufferedReader buff = new BufferedReader(myFile);
){
  System.out.println(buff.readLine());
}catch(FileNotFoundException ex){
  System.out.println("File not found".);
}
  

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

1. Что System.out.println(buff.readLine()); печатается?

2. он печатает данные моего файла :001 012 023 102 113 124 203 214 225

3. Хорошо, теперь шаблон всегда один и тот же. Это строка / столбец / значение, разделенные пробелами. Похоже, что вы можете использовать цикл и некоторые методы String для доступа к значениям.

4. Почему вы хотите хранить данные в 2D-массиве? Я имею в виду, какова ожидаемая структура данных?

5. @SatishVarma Ну, чтобы использовать массив после того, как я сохранил в нем данные

Ответ №1:

после чтения файла разделите значения наspace, чтобы создать массив значений, затем вызовите Character.digit(value.charAt(0), 10) , чтобы изменить символы на цифры на основе 10 и присвоить значения в соответствии с вашим способом:

 int [][] arr = new int[3][3];
File file = new File("file.txt");

try(
    FileReader myFile = new FileReader(file);
    BufferedReader buff = new BufferedReader(myFile);
){
    // String fileData = "001 012 023 102 113 124 203 214 225";
    String fileData = buff.readLine();
    String [] data = fileData.split(" ");
    
    for (String value : data) {
        arr[Character.digit(value.charAt(0), 10)][Character.digit(value.charAt(1), 10)] = Character.digit(value.charAt(2), 10);
    }
    
    for (int[] array : arr) {
        System.out.println(Arrays.toString(array));         
    }
}catch(Exception ex){
  System.out.println("File not found");
}
  

вы также можете использовать Character.getNumeric метод для преобразования символа цифры в значение int:

 for (String value : data) {
    arr[Character.getNumericValue(value.charAt(0))][Character.getNumericValue(value.charAt(1))] = Character.getNumericValue(value.charAt(2));
}
  

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

1. Я просто думал о charAt() =)

2. Да, сэр, это решило мою проблему, спасибо, и спасибо также за, 10 — объяснение: P