我想创建一个程序来计算输入文本中的字符,单词和行,并在读取点时停止(。)
这就是我迄今所做的......
import java.util.Scanner;
import java.io.*;
public class HelloWorld {
public static void main(String[] args) throws FileNotFoundException {
System.out.print ("Enter your text: ");
Scanner input=new Scanner(System.in);
String str=input.nextLine();
int ch=0;
int nlines=0;
int nwords=0;
while(!str.equals("."))
{
ch+=str.length();
nlines++;
String[] words = str.split(" ");
nwords = words.length;
str=input.next();
}
System.out.println("Number of words :"+nwords);
System.out.println("Number ofcharacters: "+ch);
System.out.println("Number of lines: "+nlines);
}
}
我的计划有什么问题?
答案 0 :(得分:0)
您使用next()
代替nextLine()
。另外,您不是要添加nwords,而是在每次迭代时覆盖先前的值。如果您的最后一个组成单个“。”,则此代码将起作用。
String str = input.nextLine();
int ch=0;
int nlines=0;
int nwords=0;
while(!str.equals(".")) {
nlines++;
ch += str.length();
nwords += str.split("\\s+").length;
str = input.nextLine();
}
System.out.println("Number of words :"+nwords);
System.out.println("Number ofcharacters: "+ch);
System.out.println("Number of lines: "+nlines);
答案 1 :(得分:0)
int i = 0;
while(str.charAt(i) != '.')
{
ch++;
if(i == 0)
{
nlines++;
String[] words = str.split(" ");
nwords += words.length;
}
i++;
if(i >= str.length())
{
i = 0;
if(!input.hasNextLine())
{
break;
}
str = input.nextLine();
}
}
这样的事可以帮助你。有不同的方法可以实现这一点,但这与你想要做的事情类似。
答案 2 :(得分:0)
这应该是你的代码:
import java.util.Scanner; import java.io。*;
公共课测试{
public static void main(String[] args) throws FileNotFoundException {
System.out.print("Enter your text: ");
Scanner input = new Scanner(System.in);
String str = input.nextLine();
int ch = 0;
int nlines = 0;
int nwords = 0;
while (!str.equals(".")) {
ch += str.length();
nlines++;
String[] words = str.split(" ");
nwords += words.length;
str = input.nextLine();
}
System.out.println("Number of words :" + nwords);
System.out.println("Number ofcharacters: " + ch);
System.out.println("Number of lines: " + nlines);
}
}
示例输入和输出:
输入您的文字:我的名字是1 我的名字是2 我的名字是3 。 字数:12 字符数:36 行数:3
答案 3 :(得分:0)
试试这个解决方案;
int ch=0;
int nlines=0;
int nwords=0;
String str;
while(input.hasNextLine()) {
str = input.nextLine();
nlines++;
for (char c : str.toCharArray()) {
if(ch == ' ') // you need to check for tabs and new line
nwords++;
else if(ch == '.')
break;
else ch++;
}
}
System.out.println("Number of words :"+nwords);
System.out.println("Number ofcharacters: "+ch);
System.out.println("Number of lines: "+nlines);
答案 4 :(得分:0)
我们走吧:
1-你想把空白作为一个角色吗?这一行将计算String中的所有内容:
ch+=str.length();
因此,只计算字符数的方法可能是删除空格,例如:
ch+=str.replace(" ", "").length();
2-根据上面一行,单词的数量不计算单词......它只是用新值替换旧值
nwords = words.length;
所以,你可以做的是添加值
nwords += words.length;
3-你没有相应地计算第一行,如果你按照自己的方式进行,第一个字符串就像“我的名字是约翰。”,你的程序将完成。
我为你的代码做了一个非常快速的修复,看看它:
public static void main(String[] args) {
System.out.print ("Enter your text: \n");
try(Scanner input=new Scanner(System.in)) {
String str=input.nextLine();
int ch=0;
int nlines=0;
int nwords=0;
boolean stopCount = false;
while(true)
{
if(str.contains(".")) {
String[] split = str.split(".");
if(split.length > 1) {
str = split[0];
break;
}
stopCount = true;
}
ch+=str.replace(" ", "").length();
nlines++;
String[] words = str.split(" ");
nwords += words.length;
if(stopCount) {
break;
}
str=input.nextLine();
}
System.out.println("Number of words :"+nwords);
System.out.println("Number ofcharacters: "+ch);
System.out.println("Number of lines: "+nlines);
}
}