繁体   English   中英

从用户输入的java中计算并打印空行的总数

[英]count and print total number of empty lines from user input in java

我编写了一个程序来计算用户输入中的行数和单词数。

问题:我需要程序计算行,即使它们是空的,而下面的代码不计算空行

我曾尝试使用isEmpty()方法,但它不起作用,我看到了一个名为isBlank()的方法,但要使用它,您需要下载一个库。 有没有其他方法来计算空行?

import java.util.*;
import java.util.ArrayList;


public class Counter2{
  public static void main(String[]args){
    List<String> arrayList = new ArrayList<String>();
    int words = 0;

    Scanner scan = new Scanner(System.in);
    while (scan.hasNext()) {
      String line = scan.nextLine();
      arrayList.add(line);
      words += line.split(" ").length;

    }
    System.out.println("lines: " + arrayList.size());
    System.out.println("words: " + words);
    scan.close();
  }
}

通过以下方式检查您的行是否为空且不为空:

line != null && !"".equals(line.trim())

如果您不想对行和单词做任何事情而只想对它们进行计数,为什么不为此使用两个计数变量?

while (scan.hasNext()) {
      String line = scan.nextLine();
      if(line != null && !"".equals(line.trim())) { 
        lineCount++;
        wordCount += line.split(" ").length;
      }
 }

 System.out.println("Lines:" + lineCount);
 System.out.println("Words:" + wordCount);

}

使用System.in.read从终端而不是Scanner.hasNext()获取所有输入。 \\n字符在所有平台上都有效,表示换行。

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class Counter2 {

    public static void main(String[]args) throws IOException {
        List<String> arrayList = new ArrayList<String>();
        int words = 0;

        StringBuilder line = new StringBuilder();
        int n ;
        while ((n = System.in.read()) != -1) {
            if (n=='\n') {
                arrayList.add(line.toString());
                if (!line.toString().isEmpty()) {
                    words += line.toString().split(" ").length;
                }
                line = new StringBuilder();
            } else {
                line.append((char) n);
            }
        }
        System.out.println("lines: " + arrayList.size());
        System.out.println("words: " + words);
    }

}

上面的代码片段不将新行算作单词。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM