java书中有一题不是太懂!编译没错误,但就是执行时出现了错误,求高手指教!

题目:2.编写程序,从键盘上输入一个double型的华氏温度,然后将其转换为摄氏温度输出。转换公式如下:摄氏度=(5/9)*(华氏度-32)源程序:importjava.... 题目:
2.编写程序,从键盘上输入一个double型的华氏温度,然后将其转换为摄氏温度输出。转换公式如下:摄氏度=(5/9)*(华氏度-32)
源程序:
import java.util.Scanner;
public class temperature {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.printf("请输入华氏温度:");
double x=sc.nextDouble();
double y=(5.0/9)*(x-32);
System.out.printf("摄氏温度:%.2lf\n",y);
}
}
出现的错误是这样的:
--------------------Configuration: <Default>--------------------
请输入华氏温度:41
Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = 'l'
at java.util.Formatter$FormatSpecifier.conversion(Formatter.java:2646)
at java.util.Formatter$FormatSpecifier.<init>(Formatter.java:2675)
at java.util.Formatter.parse(Formatter.java:2528)
at java.util.Formatter.format(Formatter.java:2469)
at java.io.PrintStream.format(PrintStream.java:970)
at java.io.PrintStream.printf(PrintStream.java:871)
at temperature.main(temperature.java:8)

Process completed.
请问这是哪里错了呢?谢谢啊!!!
展开
 我来答
0613032107
2013-09-21 · TA获得超过347个赞
知道小有建树答主
回答量:216
采纳率:0%
帮助的人:211万
展开全部

你的代码是不是和C语言混淆了啊,呵呵。正确的代码如下:

package com.test;

import java.math.BigDecimal;
import java.util.Scanner;

/**
 * @作者 王建明
 * @创建日期 Sep 21, 2013
 * @创建时间 10:57:38 AM
 * @版本号 V 1.0
 */
public class MainTestTwo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入华氏温度:");
double x = sc.nextDouble();
double y = (5.0 / 9) * (x - 32);
System.out.println("摄氏温度:" + numberFormat(y));
}

/**
 * @param val
 * @return
 * @作者 王建明
 * @创建日期 Sep 21, 2013
 * @创建时间 11:03:12 AM
 * @描述 —— 四舍五入保留两位小数
 */
public static double numberFormat(double val) {
BigDecimal b = new BigDecimal(val);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
return f1;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
石上清泉66
2013-09-21 · TA获得超过260个赞
知道小有建树答主
回答量:137
采纳率:0%
帮助的人:145万
展开全部
输出格式有问题,%.2lf,java虚拟机不识别“l”是什么格式。你换成%.2f,即可以看到问题解决了。
追问
另外还有一种输出格式是System.out.printf("摄氏温度="+y);
这两种方法有什么区别呢?那种方法用的多呢???解释一下好吗!
追答
如果需要格式化输出,可以使用你的写法。
基于平时的工作,我用的最多的基本都是不需要格式化的:System.out.println(),至于哪种写法用的多,其实还是要看你从事什么样的行业,做哪方面的开发,不能一概而论吧。
只是个人觉得大部分情况下是不需要格式化的,如果要格式化,一般我会先格式化好以后(例如四舍五入),然后再打印,保证显示的结果就是我最后要处理的结果,而不是实际是一个结果,显示又是另一个。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
SWkissme
2013-09-21 · TA获得超过430个赞
知道小有建树答主
回答量:181
采纳率:88%
帮助的人:82.7万
展开全部
//这里格式化输出多了一个l
System.out.printf("摄氏温度:%.2f\n",y);
追问
另外还有一种输出格式是System.out.printf("摄氏温度="+y);
这两种方法有什么区别呢?那种方法用的多呢???解释一下好吗!
追答
System.out.printf("摄氏温度:%.2f\n",y);

这一种是对输出结果进行格式化了,这里的.2f意思就是保留小数点后2位小数

System.out.printf("摄氏温度="+y);

这一种对结果没做格式化,计算出来什么样子就输出什么样子。


两种一般都用吧,根据自己的需求来选择调用的。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
星心点灯11
2013-09-21 · TA获得超过3737个赞
知道小有建树答主
回答量:1747
采纳率:0%
帮助的人:1120万
展开全部
是转换问题,对printf(),我也不熟,用println()用的比较多
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式