2017-11-16 17 views
0

私はこのプログラムを持っており、データファイルに大文字のAと小文字を数える必要があります。私はcharAtとsubstringの間で何を使うべきか分かりません。 whileループでも、next()メソッドを使用する必要があるかもしれません。多分?私はちょうどこれらの文字を見つけて合計でそれらを数える必要があります。プログラムで小文字のAと大文字のAを認識して合計するにはどうすればよいですか?

import static java.lang.System.*; 
import java.util.*; 
import java.io.*; 

public class Java2305{ 
    public static void main(String args[]){ 
     new Solution(); 
}} 


class Solution 
{ 
    private Scanner fileScan; 

    Solution() 
    { 
     run(); 
    } 

    void run() 
    { 
     int count = 0; 

     try 
     { 
      fileScan = new Scanner(new File("letters01.dat")); 

      while(fileScan.hasNext()) 
      { 
       String getA = fileScan.substring("A"); 
       out.println(getA); 
       count++; 
      } 




     } 
     catch(Exception e){} 

     out.println(); 
     out.println("The letter 'A' occurs "+count+" times."); 
     out.println(); 
     out.println(); 
    } 
} 
+0

'fileScan.substring(" A ")'は何をすべきですか? – shmosel

+0

'Scanner'に' substring() 'メソッドはありません。 –

答えて

0

なぜあなたはScannerを使用していますか?これは、正規表現を使用して区切られたトークンのテキストをスキャンするためのものですが、実際にはそれを使用していません。

私はあなたの代わりにReaderを使用し、その後、あなたは個々の文字を読むためにそのread()メソッドを呼び出すことができますお勧め:

int count = 0; 

try 
{ 
    Reader fileReader = new FileReader("letters01.dat"); 
    /* or: 
    Reader fileReader = new InputStreamReader(
     new FileInputStream("letters01.dat"), 
     "the file's charset here" 
    ); 
    */ 

    int value = fileReader.read(); 
    while (value != -1) 
    { 
     char ch = (char) value; 
     if ((ch == 'a') || (ch == 'A')) 
      count++; 
     value = fileReader.read(); 
    } 
} 
catch(Exception e){} 

あなたがより効率的にファイルを読み取るためにBufferedReaderを使用することができます。

Reader fileReader = new BufferedReader(new FileReader("letters01.dat")); 
/* or: 
Reader fileReader = new BufferedReader(
    new InputStreamReader(
     new FileInputStream("letters01.dat"), 
     "the file's charset here" 
    ) 
); 
*/ 

char-by-charではなく行単位で処理することもできます(それでもやりますが)。

int count = 0; 

try 
{ 
    String line = fileReader.readLine(); 
    while (line != null) 
    { 
     for(int i = 0; i < line.length(); ++i) 
     { 
      char ch = line.charAt(i); 
      if ((ch == 'a') || (ch == 'A')) 
       count++; 
     } 
     line = fileReader.readLine(); 
    } 
} 
catch(Exception e){} 
関連する問題