Я использовал двойной = 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. Я не понимаю, что не так, потому что часть, которую я разработал, кажется довольно симметричной. Не должно ли быть так, что оба или ни один метод преобразования не работает?