подсчитать и вывести общее количество пустых строк из пользовательского ввода в java - PullRequest
0 голосов
/ 27 февраля 2020

Я написал программу для подсчета строк и слов из пользовательского ввода.

Проблема: Мне нужна программа для подсчета строк, даже если они пусты, в то время как приведенный ниже код не считает пустую строку .

Я пытался использовать метод 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();
  }
}

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Используйте 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);
    }

}

В приведенном выше фрагменте новая строка не считается словом.

0 голосов
/ 27 февраля 2020

Убедитесь, что ваша строка пуста и не пуста:

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

}
...