2013-12-20 2 views
0

텍스트 파일을 한 줄씩 스캔하여 각 줄마다 특정 정수를 추가하는 프로그램을 작성하려고합니다.루프 및 if 문을 스캐너 클래스로 사용

01-Jan-2012  ED521D 4  100  30  1499  M N Brewer 
02-Jan-2012  ED925H 5  488  30  1499  A B Saini 
02-Jan-2012  JF560D 3  275  40  949  M S Cooper 
02-Jan-2012  ZK201U 1  359  40  474  R S Chadwick 

내 목표는 끝에서 두 번째 열에서 문자 하나에 "M"의 경우, 또는 세 번째 열 (4,5,3)에 번호를 추가하는 것입니다 : 문제의 텍스트 파일의 형식은 다음과 "에이". 따라서 프로그램은 위의 텍스트 파일을 사용하여 12를 출력해야합니다. 여기에 내가 지금까지 가지고있는 것이있다. 내 생각

public static void main(String[] args) throws IOException { 

String filename = "policy.txt"; 
Scanner input = null; 
double itemAmount = 0; 
String text = ""; 
int policyCount = 0; 

input = new Scanner(new File(filename)); 
while (input.hasNext()) { 

    String read = input.nextLine(); 
    String clean = read.replaceAll("\\P{Print}", ""); 

    char policyType = clean.charAt(59); 
    if (input.hasNextInt()) { 

     itemAmount = itemAmount + input.nextInt(); 
     input.nextLine(); 
    if (policyType == 'A' || policyType == 'M'){ 
     policyCount++; 
     }  
    } 
    else if(input.hasNext()){ 
     text = input.next(); 
    } 
    } 
    System.out.println(policyCount); 
System.out.println(itemAmount); 
} 
+4

그래서 예상대로 작동하지 않습니까? – Eran

+0

접근 방식이 더 복잡해 보이는 것처럼 보입니다. 파일의 각 줄마다 루프의 String 클래스 메서드를 사용하여 분할 및 같음을 사용합니다. –

+0

"policyCount"및 "itemAmount"를 인쇄 할 때받은 값은 0이며 잘못되었습니다. 미안 해요, 원래 게시물에 명확히 했어야합니다. – user3120540

답변

0

이 작동하는 것 같다 :이 만 24 열에서 한 자리 번호를 작동

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

public class Main 
{ 
    public static void main(String[] args) throws IOException 
    { 
     String filename = "policy.txt"; 
     Scanner input = null; 
     double itemAmount = 0; 
     int policyCount = 0; 

     input = new Scanner(new File(filename)); 
     while (input.hasNext()) 
     { 
      String read = input.nextLine(); 
      String clean = read.replaceAll("\\P{Print}", ""); 

      char policyType = clean.charAt(59); 

      if (policyType == 'A' || policyType == 'M') 
      { 
       policyCount++; 
       itemAmount += Character.getNumericValue((clean.charAt(24))); 
      } 
     } 
     input.close(); 
     System.out.println(policyCount); 
     System.out.println(itemAmount);    
    } 
} 

하는 것으로. 더 많은 자릿수를 포함 할 수 있다면 정리할 때 하위 문자열을 수행 한 다음 Double.valueOf()를 사용해야합니다.

+0

이것은 내가 찾고있는 것입니다. 도움을 주셔서 감사합니다, 대단히 감사합니다! – user3120540

0

이 도움이

itemAmount = itemAmount + input.nextInt(); 

if (policyType == 'A' || policyType == 'M'){ 

} 

내부 희망을 데려 가고 싶다는 것입니다.

또한 '읽기'문자열을 사용하지 않았습니다. 겉보기에는 줄을 건너 뛰고 있습니다.
토큰 배열을 가져 오려면 read.split ("")를 사용하십시오.
그런 다음 세 번째 토큰을 사용하여 정수로 구문 분석하십시오.
조건이 참이면 추가하십시오.

관련 문제