2013-03-06 2 views
1

파일을 파일로 읽은 다음 fileIn 객체를 가져 와서 새 변수를 만들 때 계산을 수행합니다. 특히 가격을 읽고 판매 세를 계산하십시오. 이전에 이런 유형의 프로그램을 작성했으며 코드가 아래에있는 방식대로 수행했습니다. 어떤 이유로 프로그램을 실행할 때이 오류 메시지가 콘솔에 표시됩니다.java의 파일 입력 스트림 - 데이터 계산

Exception in thread "main" java.util.InputMismatchException 
at java.util.Scanner.throwFor(Scanner.java:909) 
at java.util.Scanner.next(Scanner.java:1530) 
at java.util.Scanner.nextDouble(Scanner.java:2456) 
at TaxCalculator.main(TaxCalculator.java:42) 

는 지금까지 발견 나는 .nextLine()와 전체 라인 읽을 수 있어요 becaus 다음 내용() 메소드가, 나에게 오류를주고 있다는 것입니다 무엇을 ;, 그러나 이것은의 목적을 패배 프로그램.

import java.io.FileInputStream; 
    import java.util.Scanner; 
    import java.io.FileNotFoundException; 

    public class TaxCalculator { 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    Scanner fileIn = null; //Initializes fileIn to empty 

    //Declares variables 
    String text; 
    int value; 
    double price; 
    double tax; 

    try 
    { 
     //Attempt to open the file 
     fileIn = new Scanner (
       new FileInputStream ("Basket.txt")); 

     } 
    catch (FileNotFoundException e) 
    { 
     //This block executed if the file is not found 
     //then the program exits 
     System.out.println("File not found."); 
     System.exit(0); 
    } 



    //Read and print in lines 
    value = fileIn.nextInt(); 
    text = fileIn.next(); 
    price = fileIn.nextDouble(); 
    tax = (price * .10); 

    System.out.printf("%1d %2s %3.2f", value, text, price ); 


    /** 
    //Read and print next input line 
    value = fileIn.nextInt(); 
    text = fileIn.next(); 
    price = fileIn.nextDouble(); 
    tax = (price * .10);  
    System.out.printf("%-7s %20s %22s %30.2f %n", value , text, text, 
      price); 
    //Read and print next input line 
    value = fileIn.nextInt(); 
    text = fileIn.next(); 
    price = fileIn.nextDouble(); 
    tax = (price * .10);  
    System.out.printf("%-7s %18s %22s %30.2f %n", value , text, text, 
      price); 
    **/ 
    // Close file 
    fileIn.close(); 

    System.out.println("\nEnd of Tax Calculator"); 


    } 

} 

감사합니다. 감사합니다. - 편집 - Basket.txt 스캐너에 의해 슬로우

1 item at 10.49 
1 special item at 13.99 
1 candy bar at 0.75 

Input 2: 
1 imported pack of cigarettes at 10.00 
1 imported bottle of alcohol at 44.50 

Input 3: 

1 imported bottle of alcohol at at 25.99 
1 bottle of alcohol at 15.99 
1 packet of cough drops at 4.99 
1 box of imported cigarettes at 9.25 
+3

당신은'Basket.txt' 콘텐츠를 게시 할 수 있습니까? –

+0

게시 할 Basket.txt의 내용을 –

답변

1

의 내용이 검색 토큰이 예상되는 형태의 패턴과 일치하지 않는 것을 나타냅니다하거나하는 토큰이 예상되는 형태의 범위를 벗어 났음.

프로그램이 정수가 아닌 정수 값을 읽으려고했음을 의미합니다.

+0

'Scanner # next'가'String'을 반환합니다. 아마도 더 이상 읽을 입력이 없었을 것입니다. –

+0

스택 추적은 nextDouble() 메서드 호출임을 제공합니다. –

+0

이 줄을 따라 뭔가가있었습니다. 포맷 지정자가 실제로 스캐너 값 중 하나와 일치하지 않는 것 같습니다. –

0

Basket.txt

value = fileIn.nextInt(); text = fileIn.next(); price = fileIn.nextDouble();

처음 세 줄을 읽고, 정수와 문자열이 포함되어 있으므로 처음 세 줄이 정수문자열더블는 문자열 또는 혼합 문자열 인 경우에 있어야합니다, 그것이 표시됩니다

MismatchException 
+0

처음 세 줄은'int','String'과'double'이 아니겠습니까? –

+0

나중에 맞아 .. 내가 업데이트했습니다 – kark

+1

네, 프로그램은 문자열을 뒤 따르는 이중에서 읽을 줄을 건너 뛰지 않을 것입니다. –