2

だから私は度CをFに、またはその逆に変換するプログラムを書こうとしています。プログラムを実行するたびに、簡単に説明できないエラーが発生します。たとえば、100 C を 132 F に変換します。212 F を 0 C に変換します。私の変換式は正しいです。誰か手がかりを教えてもらえますか?メインの外のクラスでフロートを宣言しようとしましたが、役に立ちませんでした。

import java.util.Scanner;
public class TempConverter{
public static void main(String [] args)
{
    float f, c;
    f = c = 0;
    int a;
    Scanner scan = new Scanner (System.in);
    System.out.println("Press 1 for C->F or 2 for F->C");
    a = scan.nextInt();
    if (a == 1) 
        convertCtoFAndPrint();
    else
        convertFtoCAndPrint();
}

public static void convertFtoCAndPrint()
{
    f = c = 0;
    Scanner scan = new Scanner (System.in);
    System.out.println("Please enter degrees F");
    f = scan.nextFloat();
    c = (5/9)*(f-32);
    System.out.println(f + " degrees F is " + c + " degrees C.");
}

public static void convertCtoFAndPrint()
{
    Scanner scan = new Scanner (System.in);
    System.out.println("Please enter degrees C");
    c = scan.nextFloat();
    f = c*(9/5)+32;
    System.out.println(c + " degrees C is " + f + " degrees F.");
}

}
4

1 に答える 1

3

あなたが書く:

c = (5/9)*(f-32);

しかしcfloatです。

問題は、結果が常に 0 になる整数除算であること5 / 9です

同様に:

f = c*(9/5)+32;

here9 / 5は常に 1 になります。そしてc は an にキャストされますint

など5.0を書く必要があります。9.0

于 2013-06-10T01:43:14.560 に答える