2016-09-23 90 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”,一个新的对话框就会变得简单起来。如果你介意解释它,我会深深地感谢。 –