2016-09-23 16 views
1

私がしようとしているのは、華氏-100の値をとって摂氏に変換するプログラムを書くことです。プログラムを再起動することなくコードを再実行する必要があります。私はJavaにとってかなり新しいですが、これは私が思いついたものです。華氏を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の間でなければ再実行されます。次に、摂氏値が "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でどのように動作するのか、なぜあなたが "str"と書いたからといって新しいダイアログボックスが表示されるのでしょうか?あなたがそれを説明するのが気になるなら、私は深くappriciateitするでしょう。 –

関連する問題