【发布时间】:2020-02-26 05:48:30
【问题描述】:
我已经完成了这段代码,它正确打印了总行数,但对于总字数,它总是打印总共 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);
}
}
【问题讨论】:
-
你是不是应该输入几行,当它完成后,计算输入的行数和单词数?
-
@NomadMaker 我尝试对行和单词使用相同的扫描仪,代码将完美地计算行数,但是当需要计算单词时,指针将位于输入的末尾,所以有将零字:(
-
您的函数采用与 Scanner 相同类型的参数,但您为 linesCounter 发送扫描,为 wordsCounter 发送新的 Scanner(line)。为什么?我认为您应该将相同的扫描对象传递给您的 wordsCounter 函数,并且您应该根据空格拆分收到的参数。然后您可以计算此特定行中的每个单词。目前您只收到一行,并且只使用 hasext() 对其进行一次迭代。
-
@ArdahanKisbet 我尝试对行和单词使用相同的扫描仪,代码将完美地计算行数,但是当需要计算单词时,指针将位于输入的末尾,所以有将零字。
-
当你计算行数时,你会阅读整行。您可以使用此字符串(行)并使用 String[] words = line.split()。这将为您提供一个数组,数组的长度( words.length )是该行中的单词数。