来自Java用户输入的单词和行计数器

来源:爱站网时间:2021-09-16编辑:网友分享
我已经完成了此代码,它可以正确打印总行数,但是对于总单词数,它总是总可以打印1个单词。有人可以帮我吗,谢谢!导入java.util。*; ...

问题描述


我已经完成了此代码,它可以正确打印总行数,但是对于总单词数,它总是总可以打印1个单词。有人可以帮我吗,谢谢!

import java.util.*;

public class LineAndWordCounter{
  public static void main(String[]args){



    Scanner scan = new Scanner(System.in);
    while(scan.hasNext()){
      String line = scan.next();

      linesCounter(scan);
      wordsCounter(new Scanner(line) );


    }


  }

  public static void linesCounter(Scanner linesInput){
    int lines = 0;
    while(linesInput.hasNextLine()){
      lines++;
      linesInput.nextLine();
    }
    System.out.println("lines: "+lines);
  }

  public static void wordsCounter(Scanner wordInput){
    int words = 0;
    while(wordInput.hasNext()){
      words++;
      wordInput.next();
    }
    System.out.println("Words: "+words);
  }




}

思路一:


scan.next()

返回下一个“单词”。

如果您从一个单词中创建一个新的Scanner,它将只会看到一个单词

思路二:


对我来说,这看起来很复杂。

您可以将每一行保存在ArrayList中,并将单词累积在变量中。像这样的东西:

List arrayList = new ArrayList();
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();

您也不应忘记调用close()Scanner方法以避免资源泄漏

上一篇:从Java头开始

下一篇:如何为openJDK8 HotSpot VM设置开发环境?

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载