2015-02-23 63 views
0
public static void main(String[] args) { 

    //PROBLEM: -300 pops up before program shuts down 

    // Variables 
    double celsiusCalculation = 0; 
    String fahrenheitInput = ""; 

    while (!(fahrenheitInput.equals("-300"))) { 

     fahrenheitInput = JOptionPane.showInputDialog(null, 
       "Enter a number (in Fahrenheit) to convert to Celsius:"); 

     double fahrenheit = Double.parseDouble(fahrenheitInput); 

     celsiusCalculation = (fahrenheit - 32) * 5/9; 

     celsiusCalculation = (int)(celsiusCalculation * 10); 
     celsiusCalculation = celsiusCalculation/10.0; 

     JOptionPane.showMessageDialog(null, celsiusCalculation); 
    } 
} 

嘿,夥計們。我的代碼在這裏有一個小問題。出於某種原因,它計算攝氏溫度轉換並給出答案,但是當我想輸入「-300」(退出程序)時,它會計算-300華氏度到攝氏溫度,然後退出。我怎樣才能繞過這個?Farhenheit to Celsius Conversion(執行然後關閉,只希望程序關閉)

謝謝!

+0

只是爲了解釋的邏輯,代碼檢查你要求輸入之前的while循環狀態。因此,目前存在的邏輯是:(1)檢查while循環條件(2)獲取輸入(3)對輸入進行計算(4)返回while循環條件並且看不到繼續。 – Ascalonian 2015-02-23 03:41:15

回答

1

只需添加一個,如果以驗證它

public static void main(String[] args) { 

    //PROBLEM: -300 pops up before program shuts down 

    // Variables 
    double celsiusCalculation = 0; 
    String fahrenheitInput = ""; 

    while (!(fahrenheitInput.equals("-300"))) { 

     fahrenheitInput = JOptionPane.showInputDialog(null, 
       "Enter a number (in Fahrenheit) to convert to Celsius:"); 
     if(!"-300".equals(fahrenheitInput)) 
     { 
      double fahrenheit = Double.parseDouble(fahrenheitInput); 

      celsiusCalculation = (fahrenheit - 32) * 5/9; 

      celsiusCalculation = (int)(celsiusCalculation * 10); 
      celsiusCalculation = celsiusCalculation/10.0; 

      JOptionPane.showMessageDialog(null, celsiusCalculation); 
     } 
    } 
} 

-300也被計算,因爲即使它會在循環結束退出,你仍然會執行代碼的其餘部分在結束之前。

的另一種選擇將包括在使用break

while (!(fahrenheitInput.equals("-300"))) { 

    fahrenheitInput = JOptionPane.showInputDialog(null, 
      "Enter a number (in Fahrenheit) to convert to Celsius:"); 
    if("-300".equals(fahrenheitInput)) 
     break; 

    double fahrenheit = Double.parseDouble(fahrenheitInput); 

    celsiusCalculation = (fahrenheit - 32) * 5/9; 

    celsiusCalculation = (int)(celsiusCalculation * 10); 
    celsiusCalculation = celsiusCalculation/10.0; 

    JOptionPane.showMessageDialog(null, celsiusCalculation); 
} 
+0

謝謝!這是一個非常具體和直接的答案!所有其他答案也有幫助!謝謝大家! – Dongbae 2015-02-23 03:47:09

+0

@東巴不客氣:)。 – 2015-02-23 04:33:51

1

有很多方法可以解決您的問題。 關鍵是在用戶輸入後立即檢查「-300」。

例如:

while (true) { 

    fahrenheitInput = JOptionPane.showInputDialog(null, 
      "Enter a number (in Fahrenheit) to convert to Celsius:"); 
    if (fahrenheitInput.equals("-300")) 
     break; 
    double fahrenheit = Double.parseDouble(fahrenheitInput); 

    celsiusCalculation = (fahrenheit - 32) * 5/9; 

    celsiusCalculation = (int)(celsiusCalculation * 10); 
    celsiusCalculation = celsiusCalculation/10.0; 

    JOptionPane.showMessageDialog(null, celsiusCalculation); 
} 
相關問題