Counting letter occurrence

2019-02-21 00:55发布

The program needs to count and display the number of times that the specified charector appears in the text file.

Currently turning up zero for the total. I'm not if I should be using a different loop, I've also tried using a 'for' loop.

// Hold user input and sum
String fileName;    // Holds the name of the file
String letter;      // Letter to search for in the file
int total = 0;      // Holds the total number of characters in the file


// Get the name of the file and character from the user
fileName = JOptionPane.showInputDialog("Please enter the name of a file:");
letter = JOptionPane.showInputDialog("Please enter a letter contained in the string");


// Open the file for reading
File file = new File(fileName);         
Scanner inputFile = new Scanner(file);  // Declare new scanner object for file reading


// Set accumulator to zero
int count = 0;

if (inputFile.nextLine().equalsIgnoreCase(letter)) {                                

    count++;          // add letter occurrence

    total += count;   // add the letter occurrence to the total
}

4条回答
爷、活的狠高调
2楼-- · 2019-02-21 01:26

This answer is assuming each line in your text file contains just one letter as your question suggests.

You need to wrap your if statement in a loop as currently you are only checking the first line of the file:

     while(inputFile.hasNext()) {
         if (inputFile.nextLine().equalsIgnoreCase(letter))    {                                

             count++;          // add letter occurrence

             total += count;   // add the letter occurrence to the total
         }
     }

Also you can replace:

count++;
total+= count;

with just

total++;
查看更多
The star\"
3楼-- · 2019-02-21 01:30
    BufferedReader reader = new BufferedReader(new FileReader("somefile.txt"));
    int ch;
    char charToSearch='a';
    int counter=0;
    while((ch=reader.read()) != -1) {
        if(charToSearch == (char)ch) {
            counter++;
        }
    };
    reader.close();

    System.out.println(counter);

Is this of any help?

查看更多
Fickle 薄情
4楼-- · 2019-02-21 01:33

There is bug in your code.Correct code below-

   String fileName;    // Holds the name of the file
    String letter;      // Letter to search for in the file

    // Get the name of the file and character from the user
    fileName = "C:\\bin\\GWT.txt";
    letter = "X";


    // Open the file for reading
    File file = new File(fileName);         
    Scanner inputFile = new Scanner(file);  // Declare new scanner object for file reading


    // Set accumulator to zero
    int count = 0;
    while(inputFile.hasNext()) {
      if (inputFile.nextLine().toLowerCase().contains(letter.toLowercase())) { 
           count++;          // add letter occurrence
       }
    }
    System.out.println(count);
查看更多
我欲成王,谁敢阻挡
5楼-- · 2019-02-21 01:33
String line=""
while(inputFile.hasNext()) {
  line = inputFile.nextLine();
  for(int i=0; i<line.length(); i++ ){
     if (line.charAt(i)== letter)                                    
         count++;          

 }
}
查看更多
登录 后发表回答