Возврат определенной части каждой строки в txtfile и сохранение ее в double - PullRequest
0 голосов
/ 08 ноября 2019

Я хочу вернуть часть каждой строки, которая содержит точку между числами, которая является частью GPA каждой строки из текстового файла.

Я могу понять, как читать каждую строку в текстефайл и распечатать его. Я пытался использовать .contains и .substring, чтобы попытаться захватить нужную часть из каждой строки, но я не знаю, как это сделать.

1.wita7557 | william | tang | male | 3.0 | counselor | 5 | database | leader  
2.tosm5791 | tommy | smith | male | 3.5 | mastermind | 5 | designer | leader  
3.drco5905 | drew | collins | male | 3.7 | inspector | 3 | designer | programmer 

, поэтому из приведенного выше кода я хотел бы получитьожидаемый результат в массив, такой как [3.0,3.5,3.7]

Ответы [ 4 ]

0 голосов
/ 08 ноября 2019

То, что вы хотите сделать, это:

Это можно сделать с помощью одной лямбды следующим образом:

List<Double> list = Files.lines(Paths.get("myFile.txt")) // real all lines
    .map(line -> line.split("\\|"))                      // split each line on the | character
    .map(array -> array[4])                              // take the 5th element (index 4)
    .mapToDouble(Double::valueOf)                        // parse them into doubles
    .boxed()                                             // box them to allow collection
    .collect(Collectors.toList());                       // make a list out of them

Или то же самое без лямбды:

List<String> lines = Files.readAllLines(Paths.get("myFile.txt"));
List<Double> list = new ArrayList<>();
String[] array;
String stringValue;
Double doubleValue;
for(String line : lines) {
    array = line.split("\\|");
    stringValue = array[4];
    doubleValue = Double.valueOf(stringValue);
    list.add(doubleValue);
}

Примечание: Files.line() бросаетIOException поэтому вам нужно будет записать этот код в блок try / catch / finally

0 голосов
/ 08 ноября 2019

Пример кода

Double.valueOf(
"2.tosm5791 | tommy | smith | male | 3.5 | mastermind | 5 | designer | leader"
.split("\\|")[4])
0 голосов
/ 08 ноября 2019

Полная программа:

public static void main(String[] args) {
    try {
        BufferedReader reader = new BufferedReader(new FileReader("C:/Users/user/Desktop/input.txt"));
        List<Double> doubleList = new ArrayList<>();
        String buff[];
        String line = reader.readLine();
        while (line != null) {
            buff = line.split("\\|");           
            doubleList.add(Double.parseDouble(buff[4]));
            line = reader.readLine();
        }
        reader.close();
        System.out.println(doubleList);
    } catch (IOException e) {
        e.printStackTrace();
    }

}
0 голосов
/ 08 ноября 2019

ниже должно быть 5-й элемент из каждой строки (разделенный на '|'):

line.split("\\|")[4] 
...