遇到一个非常简单的java程序问题,没有显示正确的结果

时间:2016-01-24 23:38:06

标签: java printf double java.util.scanner

这是我的代码无效:

Scanner hello = new Scanner (System.in);
double a = 10;
double c;

System.out.print("Enter the value: ");
c = hello.nextDouble();
double f = a + c;
System.out.printf("The sum of 10 plus user entry is : ", a+c);

没有语法错误,没有显示错误,结果如下:      输入值:100      10加上用户输入的总和是:

因此,对于命令(a + c),在程序中没有第二行,,,但如果我在(a + c)命令之前使用'%。2f',它可以正常工作, 喜欢:

System.out.printf("The sum of 10 plus user entry is : %.2f", a+c);

我试图搜索'%。2f',但知道它仅用于确定以下数字是否显示为带有两位小数的数字。 (有点圆了,我猜)..

我完全是Java的新手。现在开始在大学学习。只是好奇地知道这个概念和原因背后的原因,为什么这个程序只能用'%.2f'键入它,而不是没有它,虽然它没有显示任何错误。如果有人能回答它会很棒。谢谢: - )

3 个答案:

答案 0 :(得分:2)

Java的System.out.printf()方法不附加信息;它取而代之。 '%。2f'表示:“将其替换为下一个参数,并将其转换为2位精确的浮点数。”删除'%。2f'意味着a+c无处可去,而printf()会丢弃它。

由于Java的System.out.printf()方法实际上是基于C / C ++中的printf(),因此您可能需要查看this指南。

答案 1 :(得分:0)

您使用的功能错误。 你应该使用

System.out.println(myString)

或者

System.out.print(myString)

您可以将代码格式化为

System.out.println(myExplinationString + a+c)

答案 2 :(得分:0)

System.outjava.io.PrintStream类的一个实例,它作为System类的静态字段提供。 printf(String format, Object... args)PrintStream类的方法之一,请检查此Oracle tutorial on formatting numbers。简而言之,第一个参数是一个格式字符串,它可以包含纯文本和格式说明符,例如%.2f,适用于下一个参数。所有格式说明符都在java.util.Formatter类的描述中进行了解释。请注意,double值为autoboxedDouble