计算Java文本文件中字符的出现

时间:2019-02-01 07:22:36

标签: java character text-files

我是Java的新手,在第一次上课时遇到了麻烦。 目的是从计算机读取文本文件(para1.txt),并计算文件中出现了多少个a。 我目前拥有的代码能够计算每行a的数量,但不能计算整个文件中a的数量,而且我不确定如何更改我的代码以解决此问题。

这里是我所拥有的:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class LetterCounter {
    public static void main(String[] args) throws FileNotFoundException {
        Scanner input = new Scanner(new File("src/para1.txt"));
        while (input.hasNextLine()) {
            String answer = input.nextLine(); 
            answer = answer.toLowerCase(); 
            char someChar = 'a';
            int count = 0;

            for (int i = 0; i < answer.length(); i++) {
                if (answer.charAt(i) == someChar) {
                    count++;
                }
            }

            System.out.println(answer);
            System.out.println("a - " + count);

        }
    }
}

2 个答案:

答案 0 :(得分:1)

您在每次迭代中都初始化变量count,这是错误的。在while之外声明变量,并检查其是否有效。从您的代码中,它将仅打印最后的行数。 请对您的代码进行以下更改:

public class LetterCounter
{
   public static void main( String[] args ) throws FileNotFoundException
   {
      Scanner input = new Scanner( new File( "src/para1.txt" ) );
      char someChar = 'a';
      int count = 0;
      while ( input.hasNextLine() )
      {
         String answer = input.nextLine();
         answer = answer.toLowerCase();
         for ( int i = 0; i < answer.length(); i++ )
         {
            if ( answer.charAt( i ) == someChar )
            {
               count++;
            }
         }
         System.out.println( answer );
      }
      System.out.println( "a - " + count );
      input.close();
   }
}

答案 1 :(得分:0)

您的计数应在行循环之外定义:

int count = 0;
char someChar = 'a';

while (input.hasNextLine()) {
    String answer = input.nextLine(); 
    answer = answer.toLowerCase(); 

    for (int i=0; i < answer.length(); i++) {
        if (answer.charAt(i) == someChar) {
            count++;
        }
    }

    System.out.println(answer);
}

System.out.println("a - " + count);