Java 使用 Scanner 计算用户输入的字数和行数
Java use Scanner to count words and lines from user input
我正在尝试使用扫描器 class 来计算用户输入的字数和行数,这是我的尝试:
import java.util.Scanner;
public class newCounter{
public static void main(String [ ] args){
Scanner input = new Scanner(System.in);
printWords(input);
printLines(input);
}
public static void printWords(Scanner x){
int words = 0;
while(x.hasNext()){
words++;
x.next();
}
System.out.println("words: " + words);
}
public static void printLines(Scanner x){
int lines = 0;
while(x.hasNextLine()){
lines++;
x.nextLine();
}
System.out.println("lines: " + lines);
}
}
我发现这两种方法单独使用时都能 100% 正常工作,但只有第一个方法一起使用时才有效(在这种情况下为 printWords 方法)。有什么方法可以组合这些方法,使其可以作为一个循环使用吗?
每个方法都会从您的控制台读取一行。因此,您必须更改为在字符串中读取该行一次,然后使用它。
public static void main(String [ ] args){
Scanner input = new Scanner(System.in);
while(input.hasNext()){
String line =input.next();
printWords(new Scanner(line));
printLines(new Scanner(line));
}
}
public static void printWords(Scanner x){
int words = 0;
while(x.hasNext()){
words++;
x.next();
}
System.out.println("words: " + words);
}
public static void printLines(Scanner x){
int lines = 0;
while(x.hasNextLine()){
lines++;
x.nextLine();
}
System.out.println("lines: " + lines);
}
你可以用下面的代码计算出字,行
public static void printWordsOfLines(Scanner x){
Scanner line=x;
Scanner word=x;
int lines = 0;
System.out.println("Enter q to quite input");
int words=0;
while(line.hasNextLine()){
String xx=line.next();
String w[]=xx.split(" ");
String l[]=xx.split("\n");
words+=w.length;
lines+=l.length;
if(xx.equals("q"))
break;
else
x.nextLine();
}
System.out.println("lines: " + lines);
System.out.println("words: " + words);
}
希望这可以帮助您找到不包括空格的字数、行数和字数。
String i=null;
Scanner input = new Scanner(System.in);
int line=0;
i= input.nextLine();
if(i!=null)
{
line++;
}
StringBuffer sb = new StringBuffer();
sb.append(i);
int wordcount=sb.length();
System.out.println("Content"+i);
System.out.println("wordsCount:"+wordcount);
System.out.println("LineCount"+line);
System.out.println("Excluding white spaces"+i.replaceAll(" ", "").length());
你在这里得到了很好的答案。
只是想稍微磨砺一下。
在您的示例中,通过完成字数统计,扫描仪指针位于输入的最后一个字的末尾 - 因此当您启动行数统计时,您没有什么可数的。
掌握了,现在最好先数一数每一行。然后按照@Balayesu Chilakalapudi 的建议通过拆分方法计算单词数,或者创建另一个扫描仪,每行 运行 - 正如@Jens 建议的那样。
我正在尝试使用扫描器 class 来计算用户输入的字数和行数,这是我的尝试:
import java.util.Scanner;
public class newCounter{
public static void main(String [ ] args){
Scanner input = new Scanner(System.in);
printWords(input);
printLines(input);
}
public static void printWords(Scanner x){
int words = 0;
while(x.hasNext()){
words++;
x.next();
}
System.out.println("words: " + words);
}
public static void printLines(Scanner x){
int lines = 0;
while(x.hasNextLine()){
lines++;
x.nextLine();
}
System.out.println("lines: " + lines);
}
}
我发现这两种方法单独使用时都能 100% 正常工作,但只有第一个方法一起使用时才有效(在这种情况下为 printWords 方法)。有什么方法可以组合这些方法,使其可以作为一个循环使用吗?
每个方法都会从您的控制台读取一行。因此,您必须更改为在字符串中读取该行一次,然后使用它。
public static void main(String [ ] args){
Scanner input = new Scanner(System.in);
while(input.hasNext()){
String line =input.next();
printWords(new Scanner(line));
printLines(new Scanner(line));
}
}
public static void printWords(Scanner x){
int words = 0;
while(x.hasNext()){
words++;
x.next();
}
System.out.println("words: " + words);
}
public static void printLines(Scanner x){
int lines = 0;
while(x.hasNextLine()){
lines++;
x.nextLine();
}
System.out.println("lines: " + lines);
}
你可以用下面的代码计算出字,行
public static void printWordsOfLines(Scanner x){
Scanner line=x;
Scanner word=x;
int lines = 0;
System.out.println("Enter q to quite input");
int words=0;
while(line.hasNextLine()){
String xx=line.next();
String w[]=xx.split(" ");
String l[]=xx.split("\n");
words+=w.length;
lines+=l.length;
if(xx.equals("q"))
break;
else
x.nextLine();
}
System.out.println("lines: " + lines);
System.out.println("words: " + words);
}
希望这可以帮助您找到不包括空格的字数、行数和字数。
String i=null;
Scanner input = new Scanner(System.in);
int line=0;
i= input.nextLine();
if(i!=null)
{
line++;
}
StringBuffer sb = new StringBuffer();
sb.append(i);
int wordcount=sb.length();
System.out.println("Content"+i);
System.out.println("wordsCount:"+wordcount);
System.out.println("LineCount"+line);
System.out.println("Excluding white spaces"+i.replaceAll(" ", "").length());
你在这里得到了很好的答案。 只是想稍微磨砺一下。 在您的示例中,通过完成字数统计,扫描仪指针位于输入的最后一个字的末尾 - 因此当您启动行数统计时,您没有什么可数的。
掌握了,现在最好先数一数每一行。然后按照@Balayesu Chilakalapudi 的建议通过拆分方法计算单词数,或者创建另一个扫描仪,每行 运行 - 正如@Jens 建议的那样。