Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 格式化数字打印输出异常_Java_Printing_Formatting_Output_Numeric - Fatal编程技术网

Java 格式化数字打印输出异常

Java 格式化数字打印输出异常,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

它一开始运行良好,直到一切崩溃。现在我需要帮助。有人吗?

导入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)    
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();