2015-02-23 16 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); 
} 
相关问题