2016-02-03 2 views
1

Я получаю ошибки во время компиляции. Ожидается .class. Я не думаю, что это потребует этого. Я довольно новичок в кодировании, так что простите мое невежество. Я также хотел бы получить некоторые рекомендации о том, как аннулировать Случай, когда пользователь вводит C или F, чтобы они могли помещать c или f и не получать сообщения об ошибках.Калькулятор температуры для Java

Это мой код:

import java.util.Scanner; 
    import java.util.InputMismatchException; 
    public class TempCALC 
    { 
    public static void main(String[] args) 
    { 
    System.out.println("This Program will allow the user to calculate temperature."); 
    calculateTemp(); 
} 
private static void calculateTemp() { 
    int F; 
    int C; 
    F=0; 
    C=1; 
    Scanner input = new Scanner (System.in); 
    System.out.println("Please enter a F to convert Fahrenheit to Celsius."); 
    System.out.println("Please enter a C to convert Celsius to Fahrenheit."); 
    int option = input.nextInt(); 
    if (int=0) { 
    System.out.println("Please enter a temperature in degrees Fahrenheit."); 
    ftoc(); 
    } else if (int= 1) { 
    System.out.println("Please enter a temperature in degrees Celsius."); 
    ctof(); 
    } else { 
    System.out.println("ERROR PLEASE ENTER A F OR A C TO PROCEED!"); 
    } 
} 
private static void ftoc() { 
    Scanner input = new Scanner(System.in); 
    Double celsius = input.nextDouble(); 
    System.out.println(celsius + "celsius is" + ((celsius * 9/5.0) + 32) + "Fahrenheite"); 
    calculatetemp(); 
} 
private static void ctof() { 
    Scanner input = new Scanner(System.in); 
    Double Fahrenheit = input.nextDouble(); 
    System.out.println(Fahrenheit + "Fahrenheit is" + ((Fahrenheit - 32) * (5/9.0)) + "Celsius"); 
    calculatetemp(); 
} 
private static void print(String string); { 
    System.out.println("\n" + string); 
} 
    } 
+0

Посмотрите на toLowerCase(), я помещу пример в секунду: http://www.tutorialspoint.com/java/java_string_tolowercase.htm –

+0

в строке 23 и 26 я получаю ожидаемый класс. "if (int = 0) .class" не имеет для меня никакого смысла, поэтому я должен что-то делать неправильно –

ответ

0
if (int=0) 

Это не относится синтаксис Java. int - это не переменная типа. Вы имели в виду, чтобы написать:

if(option == 0) 

Обратите внимание на == (сравнение) вместо = (назначение). Это поток вы имели в виду осуществить:

if (option == 0) { 
    System.out.println("Please enter a temperature in degrees Fahrenheit."); 
    ftoc(); 
    } else if (option == 1) { 
    System.out.println("Please enter a temperature in degrees Celsius."); 
    ctof(); 
    } else { 
    System.out.println("ERROR PLEASE ENTER A F OR A C TO PROCEED!"); 
    } 

Если вы хотите, чтобы пользователь мог ввести f или c вместо упоминать градусов, вам нужно будет использовать:

String option = input.next(); 

Чтобы получить String вместо Integer.

И потом:

if (option.equals('F') { ... } 
else if(option.equals('C') { ... } 
else { ... } 

Если вы хотите, чтобы ваш вход будет регистронезависимым взглянуть на toLowerCase или toUpperCase и применить его к вашим потребностям (есть ответ здесь, что показывает его использование).

+0

ОК спасибо, но теперь я получаю сообщение об ошибке «несравнимые типы: java.util.Scanner и int». поэтому мне нужно изменить переменные i, определенные в первых нескольких строках, и если да, как бы вы это порекомендовали? –

+0

Где вы получаете эту ошибку? Я не думаю, что вы должны получить это ... – Idos

+0

в строках 22 и 25 AKA if if (вход == 0) {"и" if (input == 1) {" –

0

int зарезервирован ключевое слово в Java вы не можете использовали его с выражением для сравнения, вы должны использовать его значение, как это:

int option = input.nextInt(); 
     if (option ==0) { 

Не if (int=0) { и = используется для назначения, но == используется для проверки равенство.

0

Прежде всего, вы должны проверить валидацию в своих заявлениях ifs, как упомянуто в предыдущих ответах.

Кроме того, я считаю, что ваши фактические формулы преобразования меняются местами.

Тогда для того, чтобы получить либо 'C' или 'с':

Почитаю String, вместо int:

String option = input.next(); 

А потом конвертировать все вклад в Ввод нижнего регистра:

if (option.toLowerCase().equals("f")) 

Вот полный пример:

public class TempCALC { 
    public static void main(String[] args) { 
     System.out.println("This Program will allow the user to calculate temperature."); 
     calculateTemp(); 
    } 

    private static void calculateTemp() { 
     Scanner input = new Scanner(System.in); 
     System.out.println("Please enter a F to convert Fahrenheit to Celsius."); 
     System.out.println("Please enter a C to convert Celsius to Fahrenheit."); 
     String option = input.next(); 
     if (option.toLowerCase().equals("f")){ 
      System.out.println("Please enter a temperature in degrees Fahrenheit."); 
      ftoc(); 
     }else if (option.toLowerCase().equals("c")){ 
      System.out.println("Please enter a temperature in degrees Celsius."); 
      ctof(); 
     }else{ 
      System.out.println("ERROR PLEASE ENTER A F OR A C TO PROCEED!"); 
     } 
    } 

    private static void ftoc() { 
     Scanner input = new Scanner(System.in); 
     Double celsius = input.nextDouble(); 
     System.out.println(celsius + "celsius is" + ((celsius * 9/5.0) + 32) + "Fahrenheite"); 
     calculatetemp(); 
    } 

    private static void ctof() { 
     Scanner input = new Scanner(System.in); 
     Double Fahrenheit = input.nextDouble(); 
     System.out.println(Fahrenheit + "Fahrenheit is" + ((Fahrenheit - 32) * (5/9.0)) + "Celsius"); 
     calculatetemp(); 
    } 

    private static void print(String string){ 
     System.out.println("\n" + string); 
    } 

    private static void calculatetemp(){ 
     System.out.println("\nInside calculateTemp"); 
    } 
} 
Смежные вопросы