2017-11-16 15 views
0

나는이 프로그램을 가지고 있으며 데이터 파일에서 대소 문자 A를 계산할 필요가있다. charAt 또는 substring 사이에 무엇을 사용해야할지 모르겠습니다. while 루프에서도 모두 next() 메서드를 사용해야 할 수도 있습니다. 아마도? 나는이 캐릭터들을 찾아서 총계로 계산할 필요가있다.프로그램에서 대소 문자 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을 사용하고 있습니까? 이것은 정규식을 사용하여 구분 된 토큰을 텍스트로 검색하는 것을 의미하지만 실제로 사용하지는 않습니다.

난 당신이 다음 개별 문자 읽기의 read() 메소드를 호출 할 수 대신 Reader를 사용하는 것이 좋습니다 :

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

: 당신은보다 효율적으로 파일을 읽을 수있는 BufferedReader을 사용할 수 있습니다

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

을 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){}