Сканирование файлов Java с несколькими строками и типами переменных

#java

#java

Вопрос:

Попытка сканирования файла, содержащего множество строк, несколько типов переменных и несколько сегментов (возможно, не лучшее слово для его описания?)

По сути, это мой файловый ввод (заполнители для лучшего объяснения):

 String1
int1
double1

String2
int2
double2

String3
int3
double3
  

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

Я изучал использование Scanner, но, похоже, из-за нескольких строк мне может быть лучше использовать BufferedReader, а затем преобразовывать каждую строку из строки в целое число или двойное число, если это необходимо (или я слишком усложняю это?).

У меня есть некоторый предыдущий опыт работы с C , но ничего, кроме базовых циклов for и массивов, поэтому, пожалуйста, постарайтесь, чтобы это было как можно более понятным и понятным для начинающих.

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

1. Это String# только одно слово или оно может содержать более одного слова (разделенных пробелом)?

2. @Pshemo всего одно слово 🙂

Ответ №1:

Поскольку ваш файл содержит строку, int,double, пустую строку, string,int,double,… Для этого мы можем легко использовать цикл while. Создайте 3 списка массивов, которые содержат соответствующие строки, целые числа и удвоения.

 public static void main(String[] args){
    Scanner file = new Scanner(new File("file path here"));

    ArrayList<String> strings = new ArrayList<String>();
    ArrayList<Integer> ints = new ArrayList<Integer>();
    ArrayList<Double> doubles = new ArrayList<Double>();

    while(file.hasNextLine()){
        strings.add(file.nextLine());
        ints.add(Integer.parseInt(file.nextLine()));
        doubles.add(Double.parseDouble(file.nextLine()));
        if(file.hasNextLine())
            file.nextLine();
    }
    file.close();
}
  

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

1. Сначала спасибо за ответ! Как только эти данные окажутся в списке массивов, как мне использовать каждую переменную?

2. Удалось завершить все это благодаря вашему комментарию и коду. Спасибо!