2016-09-21 7 views
0

私はJavaでコーディングしていて、TextPadエディタを使っています。このif文の問題

ユーザーが男性であるか女性であるかに応じて、特定の値に等しい「r」を設定するコードを記述しようとしています。私はすでに、男性であれば「1」、女性であれば「2」を入力するように求めています。

私はrをdoubleに設定しました。 Dおよび重みは、コードの早い方でユーザーによって定義されています。

ここでは、私が使用しようとしているコードは、 "r"を定義していないというエラーが表示され続けます。

if (gender == 1) 
    r = 0.73D; 
if (gender == 2) 
    r = 0.66D; 
else 
    System.out.println("Please enter 1 or 2 for male or female."); 

alcoholAbsored = (3.701*D)/(weight*r); 

すべてのコードは、アルコールの式になるまでコンパイルされ、次にrが定義されていないことを伝えます。技術的には、コンパイル時にif/else文に問題はありませんが、rを使用しようとすると問題が発生します。私は今このコードを使用して終了しましたが、これは本当に私が欲しいものではありません。ユーザーが1または2以外のものを置くとどうなりますか?

if (gender == 1) 
    r = 0.73D; 
else 
    r = 0.66D; 

alcohol absorbed = (3.701*D)/(weight*r); 

私が間違っていることを教えてもらえますか?お願いしてありがとう!

+1

JavaのようなコーディングするIFS文上記== javascriptの –

+0

宣言R正しいコードは次のようなものになるだろう。 .. var r; – deviantxdes

+0

グローバルに宣言します。そしてある値でそれを初期化してください –

答えて

1

コードの問題点は、最初のバージョンでelseブロック(ユーザーが1を入力した場合でも)に行くと、rは初期化されないため、次の行で見つけることができません任意の値。

if (gender == 1) 
    r = 0.73D; 
else if (gender == 2) 
    r = 0.66D; 
else { 
    r = -1D; 
    System.out.println("Please enter 1 or 2 for male or female."); 
} 
if (r != -1D) 
    alcoholAbsored = (3.701*D)/(weight*r); 

または::!

if (gender == 1 || gender == 2){ 
    if (gender == 1) 
     r = 0.73D; 
    else 
     r = 0.66D; 
    alcoholAbsored = (3.701*D)/(weight*r); 
} 
else 
    System.out.println("Please enter 1 or 2 for male or female."); 
+0

アルコール吸収式をif文に入れる必要がありますか? –

+0

いいえ、しかし 'r'が' alcoholAbsorbed'に到達する可能性のあるすべてのブランチで初期化されていることを確認する必要があります。 – afsafzal

1

その優れたこの

if(gender==1 || gender==2) 
{ 
    if (gender == 1) 
    r = 0.73D; 
    else if (gender == 2) 
    r = 0.66D; 

    alcoholAbsored = (3.701*D)/(weight*r); 
    // do something 
} 
else 
{ 
    System.out.println("Please enter 1 or 2 for male or female."); 
} 
+2

* "このようにコード化する方がいい" *コードが正しくフォーマットされていない場合は... – TNT

+0

ねえTNT。私は自分の携帯から投稿しています。コードが分かりやすい場合。中括弧やスコープステートメントを移動する必要はないと私は思います。 –