java中的文件输入流-计算数据

java中的文件输入流-计算数据,java,java.util.scanner,fileinputstream,Java,Java.util.scanner,Fileinputstream,我试图将一个文件读入程序,然后获取fileIn对象并对其进行计算,以创建一个新变量,特别是读入价格并计算销售税。我以前做过这种类型的程序,我是按照下面的代码做的。由于某些原因,这一次我在运行程序时在控制台中收到此错误消息 Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:909) at java.util.Scanner.next(Sc

我试图将一个文件读入程序,然后获取fileIn对象并对其进行计算,以创建一个新变量,特别是读入价格并计算销售税。我以前做过这种类型的程序,我是按照下面的代码做的。由于某些原因,这一次我在运行程序时在控制台中收到此错误消息

   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)
到目前为止,我发现.next()方法给了我错误,因为我能够用.nextLine()完整地阅读;,然而,这违背了该计划的目的

    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

由扫描程序引发,以指示检索到的令牌与预期类型的模式不匹配,或者该令牌超出预期类型的范围


这意味着您的程序试图读取一个不是整数的整数值。

由扫描程序抛出,以指示检索到的令牌与预期类型的模式不匹配,或者令牌超出预期类型的范围


这意味着您的程序试图读取一个不是整数的整数。

Basket.txt包含整数字符串

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

读取前三行,因此前三行应为整数字符串双精度如果是字符串或混合字符串,则会显示

MismatchException

Basket.txt
包含带整数的字符串

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

读取前三行,因此前三行应为整数字符串双精度如果是字符串或混合字符串,则会显示

MismatchException

您可以发布
Basket.txt
content吗?将Basket.txt的内容添加到post可以发布
Basket.txt
content吗?将Basket.txt的内容添加到post
Scanner#下一步
返回一个
字符串
,可能没有更多的输入可读取。堆栈跟踪提供它是下一个文件()方法调用。它是沿着这些思路进行的。我认为格式说明符实际上与一个扫描器值不匹配。
scanner\35; next
返回一个
字符串
,可能没有更多的输入可读取。堆栈跟踪提供它是一个nextDouble()方法调用。这与以下内容类似。我认为格式说明符实际上与一个扫描器值不匹配。前三行不应该是
int
String
double
如果是这样的话?是的,程序不会跳过行来读取字符串后面的double。如果我们想读取包含所有
String
整数的代码,那么
double
意味着我们可以使用
试试{value=fileIn.nextInt();text=fileIn.next();price=fileIn.nextDouble();}catch{}
选项前三行不应该是
int
String
double
如果是这样的话?是的,程序不会跳过行来读取字符串后面的double。如果我们想读取包含所有
String
整数的代码,那么
double
意味着我们可以使用
试试{value=fileIn.nextInt();text=fileIn.next();price=fileIn.nextDouble();}catch{}
选项