我正在尝试创建一个打印出华氏温度的程序。我的目标是不使用任何条件,如if
语句或任何循环。
public class TemperatureConverter {
public static void main(String[] args) {
double celsius, fahrenheit;
Scanner input = new Scanner(System.in);
System.out.print("Enter the temperature in degrees Celsius: ");
fahrenheit = input.nextDouble();
celsius = 5.0/9.0 * (fahrenheit - 32);
System.out.printf(+celsius, "degrees Celsius is" +fahrenheit "degrees Fahrenheit");
}
}
我收到的错误是:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The method printf(String, Object...) in the type PrintStream is not applicable for the arguments (double, String)
Syntax error on token ""degrees Fahrenheit"", delete this token
at TemperatureConverter.main(TemperatureConverter.java:14)
编辑:
我没有想出我需要提出的建议。当我运行这个程序时,输出是这样的:
对于此示例,用户输入45表示摄氏度的提示。
以摄氏度输入温度:45
42.77777777777778摄氏度是45.0华氏度
答案 0 :(得分:2)
只是为了解决你的错误:
System.out.print(celsius + "degrees Celsius is " + fahrenheit + " degrees Fahrenheit");
如果您想使用printf
,则可以执行此操作。
System.out.printf("%f degrees Celsius is %f degrees Fahrenheit",celsius,fahrenheit);
我做这一切的原因主要是简单的语法。字符串是双引号内的东西。例如,"blah"
是一个包含单词blah
的字符串。
如果要连接两个字符串,则在Java中使用+
运算符。因此,您希望添加"foo"
和"bar"
,并撰写"foo" + "bar"
,然后获得"foobar"
。
在您的尝试中,您犯了两个错误:
首先,(字符串连接的意图)做错了。 + celsius
不是语法错误,因为摄氏是一个数字,但如果它是一个字符串,那么编译器在+
的左边没有任何符号来连接摄氏的值。如果你想不做任何事情,那么"" + celsius
会很好。
+ celsius
实际上没有任何效果,因为它是一个数字。积极或消极不重要。 -celsius
当然会翻转标志。如果要始终显示正数(尽管输出不正确),可以使用Math.abs(摄氏度)。
其次,由于您使用的是System.out.printf
,因此您需要遵循特定的格式。即第一个参数必须是一个字符串(可能包含%d,%f,%s等),该函数将替换为您提供的后续参数。
这就是我的解决方案所做的,它使用%f
(对于浮点数)两次,我给它两个celsius
和fahrenheit
这两个是双打的,Java实现了所有的好,只是替换那里的值。你可以使用像%.2f
这样的东西,如果你想要两个小数位,那么这就是printf优于普通print或println(print + new line)的优势。
要解决另一个真正的问题,那就是你要摄取摄氏温度,但要将其保存到变量华氏度。如果你改变它,那么一切都会好的。
System.out.print("Enter the temperature in degrees Fahrenheit: ");
答案 1 :(得分:0)
要打印输出用途:
System.out.println(celsius + "degrees Celsius is" + fahrenheit + "degrees Fahrenheit");
或
System.out.printf("%f degrees Celsius is %f degrees Fahrenheit",celsius,fahrenheit);
[编辑] 出了什么问题。
java.lang.Error: Unresolved compilation problems:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The method printf(String, Object...)
printf()
的语法错误,请参阅link 答案 2 :(得分:0)
尝试考虑此打印声明:
System.out.println(celsius+" is degrees Celsius and " +fahrenheit+ " is degrees Fahrenheit");
答案 3 :(得分:0)
首先,您要求用户以celcius输入温度,然后将该值分配给名为fahrenheit的变量。它似乎不太合适。正如其他人所说,你没有正确构造字符串。
我已经整理了你的代码并更改了变量名和公式来计算华氏度。
public static void main(String[] args) {
double celsius, fahrenheit;
Scanner input = new Scanner(System.in);
System.out.print("Enter the temperature in degrees Celsius: ");
celsius = input.nextDouble();
fahrenheit = celsius*9.0/5.0 + 32;
System.out.print(celsius + " degrees Celsius is " + fahrenheit+ " degrees Fahrenheit");
}
答案 4 :(得分:-1)
System.out.printf(+celsius, "degrees Celsius is" +fahrenheit "degrees Fahrenheit");
Check your original statement. You have missed adding one +(append) to add strings.
Use this
System.out.printf("%f degrees Celsius is %f degrees Fahrenheit",celsius,fahrenheit);