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 "