温度计算代码Java

时间:2014-01-11 15:47:00

标签: java

我正在尝试创建一个打印出华氏温度的程序。我的目标是不使用任何条件,如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华氏度

5 个答案:

答案 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(对于浮点数)两次,我给它两个celsiusfahrenheit这两个是双打的,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);