Java 格式化数字打印输出异常
它一开始运行良好,直到一切崩溃。现在我需要帮助。有人吗? 导入java.util.Scanner//程序需要斯坎纳 导入java.text.DecimalFormatJava 格式化数字打印输出异常,java,printing,formatting,output,numeric,Java,Printing,Formatting,Output,Numeric,它一开始运行良好,直到一切崩溃。现在我需要帮助。有人吗? 导入java.util.Scanner//程序需要斯坎纳 导入java.text.DecimalFormat Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:864) at java.util.Scanner.next(Scanner.java:1485) a
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at Commission2.main(Commission2.java:38)
公共类委员会2
{
公共静态void main(字符串参数[])
{
//创建扫描仪
扫描仪输入=新扫描仪(System.in);
//用两位数字格式化十进制
DecimalFormat两位数=新的DecimalFormat(“0.00”);
//用三位数字格式化十进制
十进制格式三位数=新的十进制格式(“0.000”);
//声明所有变量
整数大小,计数=0;
int pay=200;
双倍佣金=9/100;
双结果=0;
双项目,项目总数=0;
//获取数据输入的限制(数据验证技术)
做{
System.out.printf(“输入项目数:”);
size=input.nextInt();
}尺寸<0;
//数据输入
while(计数<大小){
系统输出打印(“输入项目价格”+(计数+1)+“:”;
item=input.nextInt();
/*处理*/
itemtotal+=项目;
++计数;
}//结束时
结果=(项目总额*佣金)+工资;
System.out.printf(“%s%d\n”,“本周的总收入为美元”,result);
}
}
将工作,因为%d只用于整数,而%f同时用于浮点和双精度。因为它在item=input.nextInt()处失败; 在输入值时,似乎没有尝试使用int值。请检查一下。
为什么不将您使用的输入也张贴出来?在第25行,您声明了
双项
,但在第38行,您试图将input.nextInt()
分配给变量项
如果要在此处提供整数
值(5),则代码应按预期工作。但是,如果提供了Double
(5,12),将引发输入不匹配异常
异常
要解决此问题,只需更改以下内容:
System.out.printf("%s%f\n", "The total earnings for this week is $", result);
为此:
item = input.nextInt();
在printf中,您使用十进制整数格式打印浮点/双精度。 使用%f代替%d
Commission2.main(Commission2.java:38),在第38行检查,很可能您输入了错误的数据类型input@Ankit德斯潘德,我认为你是不对的。我在发帖前检查过了。我发布这篇文章的原因是因为我被难住了。@Gerald Loo你能添加它失败的输入吗?@Andrea我对我的粗鲁表示歉意。您的评论/建议只是在代码中添加了更多错误消息。您确定要为您的输入提供
整数吗?我尝试了你的代码,它可以很好地用于整数输入,但是在最后一行System.out.printf(“%s%d\n”,“本周的总收入是$”,result)中崩溃了代码>。您需要将其更改为System.out.printf(“%s%f\n”,“本周的总收入为美元”,result)代码>正如Lucian Nut正确回答的那样。是的,这是代码的唯一崩溃,前提是用户输入的值是整数!
item = input.nextInt();
item = input.nextDouble();