Я использовал двойной = 5 / 9d это целесообразно

8-й главе (Методы, конструкторы и поля) моей книги по методам Java, и у меня возникла проблема с одним из моих упражнений.

Предоставленный код: Temperature.java

  import java.awt.*;
  import java.awt.event.*;
  import javax.swing.*;
  import java.text.DecimalFormat;

  public class Temperature extends JApplet
   implements ActionListener {
      private JTextField displayF, displayC;
      private static DecimalFormat displayFormat = new DecimalFormat("0.0");

      public void init() {
          Container c = getContentPane();
          c.setBackground(Color.white);
          c.setLayout(new GridLayout(2, 2, 10, 0));

          c.add(new JLabel("  Fahrenheit:"));
          c.add(new JLabel("  Celsius:"));

          displayF = new JTextField(6);
          displayF.setBackground(Color.yellow);
          displayF.addActionListener(this);
          c.add(displayF);

          displayC = new JTextField(6);
          displayC.setBackground(Color.yellow);
          displayC.addActionListener(this);
          c.add(displayC);
      }

      public void actionPerformed(ActionEvent e) {
          String s;
          double degrees;
          FCConverter fc = new FCConverter();

          if ((JTextField) e.getSource() == displayF) {
              s = displayF.getText().trim();
              degrees = Double.parseDouble(s);
              fc.setFahrenheit(degrees);
              degrees = fc.getCelsius();
              displayC.setText(displayFormat.format(degrees));
          } else {
              s = displayC.getText().trim();
              degrees = Double.parseDouble(s);
              fc.setCelsius(degrees);
              degrees = fc.getFahrenheit();
              displayF.setText(displayFormat.format(degrees));
          }
      }
  }

И оттуда я должен написать и протестировать FCConverter.java, который придумал:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.DecimalFormat;

public class FCConverter
{
  private double Celsius;
  private double Fahrenheit;
  public double setFahrenheit (double degrees)
  {
      Celsius = (degrees - 32) * (5 / 9);
      return 0;
  }
  public double getCelsius ()
  {
      return Celsius;
  }
  public double setCelsius (double degrees)
  {
  Fahrenheit = (degrees * 9 / 5 + 32);
          return 0;
  }
  public double getFahrenheit ()
  {
      return Fahrenheit;
  }
}

Возможно, это ужасно с точки зрения стиля, но я просто хотел получить некоторый рабочий код, который прошел мимо компилятора (отсюда и «return 0;», который, я уверен, можно обойти гораздо более модным способом).

Что я хочу знать, так это то, что когда я тестирую это в appletviewer или в форме браузера, преобразование Цельсия в Фаренгейт работает нормально, но преобразование Фаренгейта в Цельсий дает только 0,0 и -0,0. Я не понимаю, что не так, потому что часть, которую я разработал, кажется довольно симметричной. Не должно ли быть так, что оба или ни один метод преобразования не работает?

Ответы на вопрос(5)

Ваш ответ на вопрос