Поиск строки в текстовом файле и определение, какая это строка - PullRequest
0 голосов
/ 16 июня 2020

У меня есть текстовый файл, как показано ниже:

jack; 488; 22; 98

Кайли; 541; 72; 81

Дженна; 995; 66; 17.

.

Список имеет следующий формат:
В каждой строке первое число после имени - это код студента, а следующие числа это баллы.

Я хочу передать код студента (как String) в качестве входных данных в программу, и он должен вернуть мне вторую оценку студента.

Я пробовал bufferedreader, но я могу просто записать все текстовые файлы в качестве вывода, но я не могу искать код и другие вещи.

Спасибо

Ответы [ 2 ]

2 голосов
/ 16 июня 2020
BufferedReader br = new BufferedReader(new FileReader("filePath"));

String contentLine = br.readLine();

while (contentLine != null) {
    String[] result=contentLine.split(";");
    String studentCode =result[1].trim();
    // apply your logic for studentCode here
    contentLine = br.readLine();
}
0 голосов
/ 16 июня 2020
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;

public class FilterCsv {

    private class Student {
        private String name;
        private String code;
        private String score;
        private String score2;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getCode() {
            return code;
        }

        public void setCode(String code) {
            this.code = code;
        }

        public String getScore() {
            return score;
        }

        public void setScore(String score) {
            this.score = score;
        }

        public String getScore2() {
            return score2;
        }

        public void setScore2(String score2) {
            this.score2 = score2;
        }

        @Override
        public String toString() {
            return "Student{" +
                    "name='" + name + '\'' +
                    ", code='" + code + '\'' +
                    ", score='" + score + '\'' +
                    ", score2='" + score2 + '\'' +
                    '}';
        }
    }

    private Function<String, Student> mapToItem = (line) -> {
        System.out.println(line);
        String[] p = line.split(";");
        Student student = new Student();
        student.setName(p[0]);
        if (p[1] != null && p[1].trim().length() > 0) {
            student.setCode(p[1]);
        }
        if (p[2] != null && p[2].trim().length() > 0) {
            student.setScore(p[2]);
        }
        if (p[3] != null && p[3].trim().length() > 0) {
            student.setScore2(p[3]);
        }
        return student;
    };

    private List<Student> processInputFile(String inputFilePath, String name) {
        List<Student> inputList = new ArrayList<>();
        try {
            File inputF = new File(inputFilePath);
            InputStream inputFS = new FileInputStream(inputF);
            BufferedReader br = new BufferedReader(new InputStreamReader(inputFS));
            // skip the header of the csv
            inputList = br.lines().map(mapToItem).collect(Collectors.toList());
            br.close();
            String secondScore = inputList
                    .stream()
                    .peek(System.out::println)
                    .filter((s -> s.getName().equals(name)))
                    .findFirst()
                    .get().getScore2();
            System.out.println("Score 2 for " + name + " is: " + secondScore);
        } catch (IOException e) {
            System.out.println(e);
        }
        return inputList;
    }

    public static void main(String[] args) {
        new FilterCsv().processInputFile("your filepath, "studentsName");
    }
}

добавить проверку ошибок и прочее ... Ура

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...