2016-09-23 151 views
1

我想要做的就是寫一個程序,它在1-100之間的華氏溫度值,並將其轉換爲攝氏溫度。如果代碼之間沒有值,則應重新運行而不必重新啓動程序。我對Java很陌生,但這是我想到的。轉換到華氏攝氏度(JAVA)

package forstaPakage; 
import javax.swing.*; 

public class FTillC { 

public static void main(String[] args) { 

    int f = Integer.parseInt(JOptionPane.showInputDialog("hur många farenheit?")); 
    do{ 
     if(f>0 && f<101){ 
      int c = ((f-32)*5)/9; 
      System.out.println(f + " farhenheit är lika med " + c + " celcius"); 
      break; 
     } 
     else{ 
      f = Integer.parseInt(JOptionPane.showInputDialog("Ogiltligt värde, skriv in ett nytt")); 

     } 
    }while(f>101 || f<1); 

} 
} 

此代碼幾乎可行。如果「f」不在1到100之間,它會重新運行。如果我然後校正f可接受的值,則攝氏度值寫出「C」「無窮大」時間,但由於某種原因,while循環不會中斷。如果有人能夠解釋我做錯了什麼,我將不勝感激。

+1

看不出有什麼問題。但是,你能否澄清「如果我接着修正攝氏溫度的可接受值」? – Gaur93

+1

工作在這裏很好(有一些消息添加的System.out了一段時間後,你輸入一個合法值後,將打印的信息。)因此,丈二和尚摸不着頭腦您發佈的測試代碼和真正的問題是不同的。 – mtj

+0

如果我第一次運行代碼並輸入一個不在範圍1-100之間的值,代碼將重新運行,並彈出消息「無效值,寫入新值」。如果我接着寫1-100之間的某個值被寫入了「無限次」 –

回答

1

我想你可能想這個代替,當我運行你所提供的代碼,並進入隨後14 114,程序退出而不顯示轉換。相反,您可以執行以下操作:

package forstaPakage; 

import javax.swing.*; 

public class Main { 

    public static void main(String[] args) { 

     String str = ""; 

     while(true) { 
      int f = Integer.parseInt(JOptionPane.showInputDialog(str + "\n" + "hur många farenheit?")); 
      if(f>0 && f<101){ 
       int c = ((f-32)*5)/9; 
       System.out.println(f + " farhenheit är lika med " + c + " celcius"); 
       break; 
      } else { 
       str = "Ogiltligt värde, skriv in ett nytt"; 
      } 
     } 

    } 
} 
+0

我能看到爲什麼這是簡單的,即使我不太明白這是什麼做的「字符串str =‘’;」以及它在else語句中的工作原理,爲什麼只是因爲你寫了「str」,一個新的對話框就會變得簡單起來。如果你介意解釋它,我會深深地感謝。 –