Java 从文件中读取数据以在程序运行时计算它

Java 从文件中读取数据以在程序运行时计算它,java,Java,此代码应该通过读取文件中的括号和税率来计算累进税,但它显示了不匹配的输入错误 编辑:可以编译和运行的示例(但仍不完整) import java.io.FileNotFoundException; 导入java.io.FileReader; 导入java.io.IOException; 导入java.util.Scanner; /** {@code java CalculateProgressiveXmpl R:\\jeffy\\programming\\sandbox\\xbnjava\\xb

此代码应该通过读取文件中的括号和税率来计算累进税,但它显示了不匹配的输入错误

编辑:可以编译和运行的示例(但仍不完整)

import java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.io.IOException;
导入java.util.Scanner;
/**

{@code java CalculateProgressiveXmpl R:\\jeffy\\programming\\sandbox\\xbnjava\\xbn\\z\\xmpl\\lang\\Taxes.txt}

**/ 公共类CalculateProgressiveXmpl{ 私人固定双基工资=0.0; 私人静态双重税=0.0; 公共静态最终void main(字符串[]作为输入){ 试一试{ calculateProgressive(如输入路径[0]); }捕获(运行时异常rtx){ if(as_1RqdPathToInput.length==0){ 抛出新的IllegalArgumentException(“缺少一个必需参数:Taxes.txt的路径”); } 投掷rtx; }捕获(iox异常){ 抛出新的运行时异常(iox); } } public static final void calculateProgressive(字符串s_inputFile)引发FileNotFoundException, IOException{ 试一试{ Scanner readtax=新扫描仪(新文件读取器(s_inputFile)); 字符串taxType=readtax.next(); 字符串括号=readtax.next(); int amount=readtax.nextInt()-1; 双倍税1[]=新的双倍税[amount+1]; while(readtax.hasNext()){ for(int i=0;i=bottom括号) &&(基本工资如果这是您的数据:

 "Progressive Tax Ammount of brackets: 2 0.0 30000.0 0.0 45001.0 45000.0 0.2 " 
然后
String-taxType=readtax.next();
将是“累进”的,而
String-方括号=readtax.next();
将是“Tax”。您应该从中看到问题:)

使用调试器单步执行代码也应该让它变得明显。

readtax.nextInt()
在实际应该是
next()
时很早就被调用,因为amount无法匹配整数的模式


尝试:
“累进税2 0.0 30000.0 0.0 45001.0 45000.0 0.2”

在测试代码时,我发现输入不匹配异常有两种不同的原因:

1) 正如其他人已经指出的,在第一个int之前有太多的前导字符串。因此,将您的输入更改为只有两个

2) 在我的区域设置中,十进制值使用的是,(逗号)而不是。(点),因此扫描仪使用“\\,”作为小数分隔符,在解析输入时,下一步将出现InputMismatchException失败。我建议您也检查您的区域设置以验证您的设置


注意:一旦我解决了这些问题,代码仍然会失败(这次使用java.util.NoSuchElementException)因此,我认为,一旦您消除了InputMismatchException,您将不得不重新修改算法。

您不理解错误的哪一部分?不应该有错误。它应该显示结果示例数据会很好。Taxes.txt看起来像什么?“不应该有错误。”显然。
 "Progressive Tax Ammount of brackets: 2 0.0 30000.0 0.0 45001.0 45000.0 0.2 "