【问题标题】:How to read an empty string to create output如何读取空字符串以创建输出
【发布时间】:2019-11-01 08:41:04
【问题描述】:

我有需要读取输入的文件。在其中一条线上,没有添加名称。在这种情况下,我想打印出没有找到匹配项。我遇到的问题是我不知道如何确保程序实际上将该部分读取为空字符串。现在发生的情况是,控制台上的行将留空。

日期输入如下所示:

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();

}

}

【问题讨论】:

    标签: java string if-statement is-empty


    【解决方案1】:

    一个更简单的解决方案是逐行读取文件并像这样处理它们:

    • 按分隔符分割
    • 检查是否有超过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]);
            }
        }
    }
    

    【讨论】:

    • 感谢您的帮助!没有数组有没有办法做到这一点?
    • @Zsa_Sza 当然,但这不会很好,就像使用 indexof 逗号和子字符串操作行一样,我向您展示的解决方案是我会使用的解决方案,始终逐行阅读并处理他们
    • 好吧,在这种特殊情况下我不能使用数组。我已经调整了上面的代码。我现在遇到的问题是当我在 while 循环中计数时长度不匹配。我你愿意再看看那会很棒!
    猜你喜欢
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    相关资源
    最近更新 更多