2014-02-11 1 views
0

참고 :이 문제에 대한 답변을 원하지 않으므로 직접 가르치고 싶지만 멈춰서 무엇을해야할지 조언 해주십시오.JAVA : 사용할 문자열 다음에 구분 기호를 다시 설정하십시오 .nextDouble

연습을 위해 입력 파일을 읽고 반향시켜야합니다.

연습 문제는 ATM 거래를 만드는 것입니다, 입력 파일의 한 줄을 읽 스테이시 존스, 300 D 100

내가 같이 출력이 있습니다

name 
current balance 
action (D means deposit) 
transaction amount 

내가 현재 가지고 이름, 그리고 현재의 균형을 얻으려면 나는 현재의 균형 (예 : 300) 전에 공백이 아직 있다는 것입니다 내 문제는 쉼표로 라인을 끝내기 위해 구분 기호를 변경

여기 내 코드입니다 :

try { 
    FileInputStream stream = new FileInputStream("src/transactions.txt"); 
    fileIn = new Scanner(stream); 

    fileIn.useDelimiter(","); 
    name = fileIn.next(); 
    System.out.println("Customer Name: " + name); 
    fileIn.reset(); 
    balance = fileIn.nextDouble(); 
    System.out.printf("Checking balance before transaction: %.2f", balance); 

} catch (FileNotFoundException e) { 
    System.out.println("Transactions cannot be found"); 
} 

내가 받고 오전 오류는 다음과 같습니다

Exception in thread "main" java.util.InputMismatchException 
at java.util.Scanner.throwFor(Scanner.java:857) 
at java.util.Scanner.next(Scanner.java:1478) 
at java.util.Scanner.nextDouble(Scanner.java:2404) 
at MP3.main(MP3.java:30) 
+0

'Catch' * 표시 예외 * 같은 공간에서 델리 동료에게 두 번째 토큰을 다시하고 nextDouble''하려는 입력을 인쇄하면 문제를 이해할 수있을 수 있습니다. – Maroun

+0

예외가 잡히고 System.out.println (fileIn)이 나에게 이것을 주었다. 구분 기호 = \ p {javaWhitespace} + – Joseph

답변

0

문제는 귀하의 의견과 함께합니다. fileIn.nextDouble() 할 때 당신은 두 배를 기대하고있다. 파일에서 무엇을 얻는지는 사실 ' 300' 문자열이므로 앞에 공백을 넣으십시오. 스캐너로는 이중으로 변환 할 수 없습니다.

올바른 방향을 제시해야합니다.

0

당신은

FileInputStream stream = new FileInputStream("src/transactions.txt"); 
     fileIn = new Scanner(stream); 
     fileIn.useDelimiter(","); 
     name = fileIn.next(); 
     System.out.println("Customer Name: " + name); 
     Scanner s = new Scanner(fileIn.next()); 
     s.useDelimiter(" "); 
     balance = s.nextDouble(); 
     System.out.printf("Checking balance before transaction: %.2f %n", balance); 
     System.out.println("Action: "+s.next()); 
     System.out.println("Transaction amount: "+s.nextDouble()); 
     fileIn.reset(); 
관련 문제