2016-09-23 1 views
1

То, что я пытаюсь сделать, - написать программу, которая принимает значение Фаренгейта между 1-100 и конвертировать его в цель. если значение не находится между кодом, необходимо повторно запустить без перезапуска программы. Я новичок в Java, но это то, что я придумал.Преобразование fahrenheit в celcius (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 приемлемым значением, значение Celsius выписал «C» «бесконечность», цикл while по какой-то причине не сломается. Если бы кто-то мог объяснить, что я сделал неправильно, я был бы признателен.

+1

не может понять, в чем проблема. Но можете ли вы уточнить «если я тогда исправлю приемлемое значение Цельсия»? – Gaur93

+1

Прекрасно работает (добавьте System.out с некоторым сообщением после этого времени, и сообщение будет напечатано после ввода юридического значения.) Таким образом, что-то должно отличаться от кода теста, который вы опубликовали, и реальной проблемы. – mtj

+0

, если я сначала запустил код и введите значение, которое не находится между диапазоном 1-100, повторный запуск кода и всплывающее сообщение «недопустимое значение, напишите новое». если я затем напишу значение между 1-100, значение будет выписано «бесконечные времена» –

ответ

1

Я думаю, вы можете захотеть этого вместо этого, когда я запустил предоставленный вами код и введите 114, а затем 14, программа выйдет без отображения преобразования. Вместо этого вы могли бы сделать следующее:

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

Я могу понять, почему это проще, хотя я не совсем понимаю, что это такое «String str =» »; и как это работает в else-statment, почему новый диалоговом окне shpow только потому, что вы пишете «str». Если вы возражаете, чтобы объяснить это, я бы глубоко appriciateit. –

Смежные вопросы