#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