java中的文件输入流-计算数据
我试图将一个文件读入程序,然后获取fileIn对象并对其进行计算,以创建一个新变量,特别是读入价格并计算销售税。我以前做过这种类型的程序,我是按照下面的代码做的。由于某些原因,这一次我在运行程序时在控制台中收到此错误消息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
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的内容添加到postScanner#下一步
返回一个字符串
,可能没有更多的输入可读取。堆栈跟踪提供它是下一个文件()方法调用。它是沿着这些思路进行的。我认为格式说明符实际上与一个扫描器值不匹配。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{}
选项