2017-09-23 3 views
-3

파일에서 숫자를 읽을 수 있도록이 코드를 조작해야합니다. 나는 정직하게 어떤 이유로이 하나에 곤란을 겪고 있습니다. 먼저 토큰 화해야합니까? 감사합니다.파일의 자릿수를 계산하도록이 코드를 조작하십시오.

import java.io.*; 
import java.util.*; 

public class CountLetters { 

    public static void main(String args[]) { 
     if (args.length != 1) { 
      System.err.println("Synopsis: Java CountLetters inputFileName"); 
      System.exit(1); 
     } 
     String line = null; 
     int numCount = 0; 
     try { 
      FileReader f = new FileReader(args[0]); 
      BufferedReader in = new BufferedReader(f); 
      while ((line = in.readLine()) != null) { 
       for (int k = 0; k < line.length(); ++k) 
        if (line.charAt(k) >= 0 && line.charAt(k) <= 9) 
         ++numCount; 
      } 
      in.close(); 
      f.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     System.out.println(numCount + " numbers in this file."); 
    } // main 
} // CountNumbers 
+2

사람들에게 시도하고 읽으라고 요청하는 경우 [코드가 제대로 들여 쓰기되었는지 확인] (https://stackoverflow.com/posts/46385103/edit)해야합니다. – khelwood

+0

스택 오버플로에 오신 것을 환영합니다. 이 일을하기 위해 이미 무엇을 시도 했습니까? [좋은 질문을하는 방법] (https://stackoverflow.com/help/how-to-ask)을 검토하십시오. 스택 오버플로는 코딩 서비스가 아닙니다. *** 귀하의 문제를 조사하고 게시하기 전에 코드를 직접 작성하는 것이 좋습니다 ***. * 특정 *에 붙어 있다면, [Minimal, Complete, Verifiable example] (https://stackoverflow.com/help/mcve) 및 시도한 내용을 요약해서 포함시켜주십시오. – FluffyKitten

+0

입력 파일이 무엇입니까? – tommybee

답변

2

사용 '' 또한 당신이 명시 적으로 가까운 통화를 피하기 위해 try-with-resources Statement을 사용하는 것이 좋습니다 당신이하지 않는 한 (한 줄에 괄호없이 루프를 사용하지 않도록하시기 바랍니다 것, (당신이 int들에 char의를 비교하는)을 char 상수를 나타냅니다 람다 사용). 마찬가지로

public static void main(String args[]) { 
    if (args.length != 1) { 
     System.err.println("Synopsis: Java CountLetters inputFileName"); 
     System.exit(1); 
    } 
    String line = null; 
    int numCount = 0; 
    try (BufferedReader in = new BufferedReader(new FileReader(args[0]))) { 
     while ((line = in.readLine()) != null) { 
      for (int k = 0; k < line.length(); ++k) { 
       if ((line.charAt(k) >= '0' && line.charAt(k) <= '9')) { 
        ++numCount; 
       } 
      } 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    System.out.println(numCount + " numbers in this file."); 
} // main 

또한, 모든 비 숫자 (\\D)를 제거하고 (모든 자리 인) 결과 String의 길이를 추가 할 정규 표현식를 사용할 수 있습니다. 마찬가지로,

while ((line = in.readLine()) != null) { 
    numCount += line.replaceAll("\\D", "").length(); 
} 
1

사용 if(Charachter.isDigit(char)) 각 문자와 문자를 대체,이 각각의 수를 계산하며, 나뿐만 아니라 아라비아 숫자를 생각합니다.

관련 문제