2016-04-06 3 views
0

Я пишу небольшое небольшое приложение конверсии для конверсий степени, и я застрял. У меня возникают проблемы с обновлением значений с помощью методов другого класса. Вот мой код:Проблема с моей первой программой

public class AppInfo { 
    private double value; 
    public double getValue() { 
     return value; 
    } 
    public void setValue(double value) { 
     this.value = value; 
    } 
    public void ConvertF() { 
     value = (value * 1.8) + 32; 
    } 
    public void ConvertC() { 
     value = ((value - 32) * (5/9)); 
    } 
    public void show() { 
     System.out.println(value); 
    } 
} 

Мой второй класс (основной) заключается в следующем:

public class Working { 
    public static void main(String[] args) { 
     System.out.println("Enter degree"); 
     Scanner sc = new Scanner(System.in); 
     double value = sc.nextDouble(); 
     AppInfo newValue = new AppInfo(); 
     String answer; 
     System.out.println("What unit conversion? C to convert to celsius and F for fahrenheit"); 
     answer = sc.next(); 
     newValue.setValue(value); 
     if(answer.toLowerCase() == "c") { 
      newValue.ConvertC(); 
     } 
     else if(answer.toLowerCase() == "f") { 
      newValue.ConvertF(); 
     } 
     newValue.show(); 
    } 
} 

Каждый раз, когда я запускаю его, он просто возвращает то же значение, введенное пользователем в начале. Он не будет обновлять новое значение после использования методов ConvertF/C.

Я не знаю, почему это обозначено как дубликат. Мой вопрос не в сравнении строк, так как, черт возьми, это даже отдаленно дубликат? Я просто хочу, чтобы кто-то помог мне понять, что не так с моим кодом, поэтому я могу иметь функциональную программу, которая преобразует степени. Просто закрытие моего вопроса является демотивирующим и очень раздражающим. Все, что я хочу, это знать, как это исправить/что не так.

+5

_Trouble с моим первым program_ не является очень полезное название. Всегда указывайте свои заголовки, чтобы отразить актуальную проблему. – Savior

ответ

1

Вы сравниваете неправильно строки, когда вы это делаете:

answer.toLowerCase() == "c" 

, то вы сравниваете ссылки и не содержание

сделать вместо:

if(answer.equalsIgnoreCase("c")) { 
      newValue.ConvertC(); 
     } 
     else if(answer.equalsIgnoreCase("f")) { 
      newValue.ConvertF(); 
     } 

И этот метод является неправильным:

public void ConvertC() { 
     value = ((value - 32) * (5/9)); 
    } 

это будет установлено значение 0.0, потому что вы разделяете 5/9 как целое, так что результат будет целым числом (ноль)

сделать это:

public void ConvertC() { 
     value = ((value - 32) * (5.0/9)); 
    } 
+0

Вы копируете свой [собственный ответ] (http://stackoverflow.com/a/35813942/3824919) вместо того, чтобы делать правильную вещь (помечать этот вопрос как дубликат)? Очень грустный. – Tom

+0

Не исправить это, я все равно получаю 0.0 в качестве ответа. – Infinit3Space

+0

да, я понимаю, что вы получите 0.0 при конвертации в C, я нашел там еще одну ошибку и обновил свой ответ ... взгляните и дайте мне знать –

Смежные вопросы