Java. Считать строки из файла

272
24 ноября 2017, 07:01

Здравствуйте. Помогите, пожалуйста. Нужно считать из .txt файла строки, которые выглядят так :

14 Февраля
10 Декабря
22 Июня
...

День считать в int переменную, название месяца в String переменную. Никак не могу разобраться как это сделать?

Scanner sc = new Scanner(new File("d:\\1.txt"));
while(sc.hasNext()){
    int tempDay = sc.nextInt();
    String tempMonth = sc.nextLine();
    theTree.insert(tempDay,tempMonth);//вставка данных в бинарное дерево
}
Answer 1
Scanner sc = new Scanner(new File("d:\\1.txt"));
int tempDay;
String [] splitted;
String tempMonth;
while(sc.hasNext()){
    splitted = sc.nextLine().split(" ");
    tempDay = Integer.parseInt(splitted[0]);
    tempMonth = splitted[1];
    theTree.insert(tempDay,tempMonth);//вставка данных в бинарное дерево
}

пример работы

UPD: Проверил у себя чтение из файла – все работает:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class test {
    public static void main(String[] args) throws FileNotFoundException {
        Scanner sc = new Scanner(new File("file.txt"));
        int tempDay;
        String [] splitted;
        String tempMonth;
        while(sc.hasNext()){
            splitted = sc.nextLine().split(" ");
            tempDay = Integer.parseInt(splitted[0]);
            tempMonth = splitted[1];
            System.out.println(tempDay + "," + tempMonth);
        }
    }
}
Answer 2

Если использовать Scanner для большого количества скажем 10^5 уже будет выполняться более 1 секунды. Поэтому для больших данных лучше использовать StreamTokenizer. Вот пример работы.

import java.io.*;
public class Example_Read {
    public static void main(String[] args) throws IOException{
        StreamTokenizer reader = new StreamTokenizer(new BufferedInputStream(new FileInputStream(new File("input.txt"))));
        while (reader.nextToken()!= StreamTokenizer.TT_EOF){
            int day = (int)reader.nval;
            reader.nextToken();
            String month = reader.sval;
            System.out.println(day + " " + month);
        }
    }
}
READ ALSO
Разбор условия if(?:) return;

Разбор условия if(?:) return;

Подскажите пожалуйста, как можно озвучить данное условие if()

176
Многоразовый вызов метода потоком

Многоразовый вызов метода потоком

В процессе изучения многопоточности JAVA возник вопрос:

180
Неравенство Коши на языке java

Неравенство Коши на языке java

Есть неравенство КошиПользователь задает значение n

238
Создание GUI на Java в IntelliJIDEa

Создание GUI на Java в IntelliJIDEa

Создаю новый проект, в нем класс и форму, добавляю в JPanel кнопку, но почему-то не могу ни поменять её размер, ни перетащить в другое место на панели,...

253