Как читать пустую строку для создания вывода - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть файл, из которого мне нужно прочитать ввод. На одной из строк имя не добавлено. В этом случае я хочу распечатать, что совпадение не найдено. Проблема, с которой я столкнулся, заключается в том, что я не знаю, как убедиться, что программа на самом деле читает часть как пустую строку. Что происходит сейчас, так это то, что строка на консоли будет пустой.

Ввод даты выглядит следующим образом:

5=20=22=10=2=0=0=1=0=1;Vincent Appel,Johannes Mondriaan

2=30=15=8=4=3=2=0=0=0;

Администрация класса {

public static final int TOTAL_NUMBER_OF_SIMULARITY_SCORES = 10;
public static final String ZERO_MATCHES = "_";
public static final String LESS_THAN_TWENTY_MATCHES= "-";
public static final String TWENTY_OR_MORE_MATCHES = "^";


PrintStream out;    

Administration() {
    out = new PrintStream(System.out);

}


void printSimilarityScores (Scanner similarityScoresScanner, String similarityScoresInput) {
    similarityScoresScanner.useDelimiter("=|;");
    int length = similarityScoresInput.length();

    for (int i = 0; i < TOTAL_NUMBER_OF_SIMULARITY_SCORES; i++) {
        int grade = similarityScoresScanner.nextInt();

        if (grade == 0) {
            out.printf(ZERO_MATCHES);
        } else if (grade < 20) { 
            out.printf(LESS_THAN_TWENTY_MATCHES);
        } else {
            out.printf(TWENTY_OR_MORE_MATCHES);
        }

    } 

    System.out.print("\n");
    similarityScoresScanner.useDelimiter(";|,");

    while(similarityScoresScanner.hasNext()) {
        String name = similarityScoresScanner.next();

        if (length < 22) {
            out.printf("No matches found\n");
        } else {
            System.out.print("\n" + name);
        }

    } 

} 




void start() {

    Scanner fileScanner = UIAuxiliaryMethods.askUserForInput().getScanner();    

        while (fileScanner.hasNext()) { 

            String finalGradeInput = fileScanner.nextLine();
            String similarityScoresInput = fileScanner.nextLine();

            Scanner finalGradeInputScanner = new Scanner(finalGradeInput);
            Scanner similarityScoresScanner = new Scanner(similarityScoresInput);

            printFinalGrade(finalGradeInputScanner);
            printSimilarityScores(similarityScoresScanner, similarityScoresInput);

        }
    }

public static void main(String[] argv) {

    new Administration().start();

}

}

1 Ответ

1 голос
/ 01 ноября 2019

Более простым решением было бы прочитать файл, построчно и обработать их следующим образом:

  • разделить на разделитель
  • проверить, существует ли более 1 элемента,
  • если положительные, напечатать их
Scanner similarityScoresScanner = new Scanner(myFile);
while (similarityScoresScanner.hasNextLine()) {
    String[] content = similarityScoresScanner.nextLine().split("[;,]");
    if (content.length == 1) {
        System.out.println("No matches found");
    } else {
        for (int i = 1; i < content.length; i++) {
            System.out.println(content[i]);
        }
    }
}
...