Java计数程序

时间:2014-09-24 12:34:35

标签: java eclipse string text count

我想创建一个程序来计算输入文本中的字符,单词和行,并在读取点时停止(。)

这就是我迄今所做的......

    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);
    }

    }

我的计划有什么问题?

5 个答案:

答案 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);
    }

}