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.
请问这是哪里错了呢?谢谢啊!!! 展开
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.
请问这是哪里错了呢?谢谢啊!!! 展开
4个回答
展开全部
你的代码是不是和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;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
输出格式有问题,%.2lf,java虚拟机不识别“l”是什么格式。你换成%.2f,即可以看到问题解决了。
追问
另外还有一种输出格式是System.out.printf("摄氏温度="+y);
这两种方法有什么区别呢?那种方法用的多呢???解释一下好吗!
追答
如果需要格式化输出,可以使用你的写法。
基于平时的工作,我用的最多的基本都是不需要格式化的:System.out.println(),至于哪种写法用的多,其实还是要看你从事什么样的行业,做哪方面的开发,不能一概而论吧。
只是个人觉得大部分情况下是不需要格式化的,如果要格式化,一般我会先格式化好以后(例如四舍五入),然后再打印,保证显示的结果就是我最后要处理的结果,而不是实际是一个结果,显示又是另一个。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//这里格式化输出多了一个l
System.out.printf("摄氏温度:%.2f\n",y);
追问
另外还有一种输出格式是System.out.printf("摄氏温度="+y);
这两种方法有什么区别呢?那种方法用的多呢???解释一下好吗!
追答
System.out.printf("摄氏温度:%.2f\n",y);
这一种是对输出结果进行格式化了,这里的.2f意思就是保留小数点后2位小数
System.out.printf("摄氏温度="+y);
这一种对结果没做格式化,计算出来什么样子就输出什么样子。
两种一般都用吧,根据自己的需求来选择调用的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是转换问题,对printf(),我也不熟,用println()用的比较多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |