2013-06-10 3 views
1

Итак, я пытаюсь написать программу для преобразования градусов C в F или наоборот. Каждый раз, когда я запускаю программу, я получаю ошибки, которые я не могу легко объяснить. Например, он преобразует 100 C в 132 F. Он преобразует 212 F в 0 C. Мои формулы преобразования являются правильными. Может ли кто-нибудь дать мне некоторые подсказки? Я попытался объявить поплавки в классе за пределами основного, но это не помогло.базовый преобразователь температуры java

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."); 
} 

} 
+0

Какие ошибки вы видите? Также код, который был отправлен, не компилируется. –

+0

Вы должны размещать сообщения в: http://codereview.stackexchange.com/ –

ответ

3

Вы пишете:

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

Но c является float.

Проблема заключается в том, что 5/9является целочисленное деление, результат которого всегда равен 0.

Аналогично:

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

здесь 9/5 всегда будет 1. И с будет брошен в a int.

Вам нужно написать 5.0, 9.0 и т.д.

+2

И область действия 'float f, c;' неверна. –

+0

@RongNK yup .. Некоторые части кода, где не отображаются, я думаю. – fge

0
import java.util.Scanner; 

public class TempConverter { 
    private static float f = 0, c = 0; 
    private static final Scanner scan = new Scanner (System.in); 
    private static int converChoice = 1; 

    public static void main(String [] args) { 
     System.out.println("Press 1 for C->F or 2 for F->C"); 
     converChoice = scan.nextInt(); 

     if (converChoice == 1) 
      convertCtoFAndPrint(); 
     else 
      convertFtoCAndPrint(); 
    } 

    public static void convertFtoCAndPrint() { 
     System.out.println("Please enter degrees F"); 
     f = scan.nextFloat(); 

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

     System.out.println(f + " degrees F is " + c + " degrees C."); 
    } 

    public static void convertCtoFAndPrint() { 
     System.out.println("Please enter degrees C"); 
     c = scan.nextFloat(); 

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

     System.out.println(c + " degrees C is " + f + " degrees F."); 
    } 
} 
Смежные вопросы