Java 用户输入的字数和行数计数器
Words and lines counter from user input for Java
我已经完成了这段代码,它正确地打印了总行数,但是对于总字数,它总是打印出 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()
returns下一个"word".
如果您从那个一个词中创建一个新的Scanner
,它只会看到一个词。
这将发生在
String line = scan.next();
wordsCounter(new Scanner(line) );
这对我来说看起来相当复杂。
您可以只将每一行保存在一个 ArrayList 中,然后将单词累积到一个变量中。
像这样:
List<String> 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();
您也不要忘记调用 Scanner
的 close()
方法以避免资源泄漏
我已经完成了这段代码,它正确地打印了总行数,但是对于总字数,它总是打印出 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()
returns下一个"word".
如果您从那个一个词中创建一个新的Scanner
,它只会看到一个词。
这将发生在
String line = scan.next();
wordsCounter(new Scanner(line) );
这对我来说看起来相当复杂。
您可以只将每一行保存在一个 ArrayList 中,然后将单词累积到一个变量中。 像这样:
List<String> 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();
您也不要忘记调用 Scanner
的 close()
方法以避免资源泄漏