2016-04-22 11 views
0

私は "if文"の中で作成された値を使用してそれを外に出そうとしていますが、それを認識できないポップアップを作成するのはなぜですか。誰かが私を助けてくれる?if文の値の使い方は?

@Override 
public void onClick (View v){ 
    int sum = uno + dos + tres + cuatro; 
    double pru = sum*8; 
    if(sum == 11){ 
     double tot = pru - (pru*.01); 
     String tot1 = String.valueOf(tot); 
    } 
    if(sum == 12){ 
     double tot = pru - (pru*.02); 
     String tot1 = String.valueOf(tot); 
    } 
    if(sum == 13){ 
     double tot = pru - (pru*.03); 
     String tot1 = String.valueOf(tot); 
    } 
    if(sum == 14){ 
     double tot = pru - (pru*.04); 
     String tot1 = String.valueOf(tot); 
    } 
    if(sum == 15){ 
     double tot = pru - (pru*.05); 
     String tot1 = String.valueOf(tot); 
    } 
    if(sum == 16){ 
     double tot = pru - (pru*.06); 
     String tot1 = String.valueOf(tot); 
    } 
    if(sum == 17){ 
     double tot = pru - (pru*.07); 
     String tot1 = String.valueOf(tot); 
    } 
    if(sum == 18){ 
     double tot = pru - (pru*.08); 
     String tot1 = String.valueOf(tot); 
    } 
    if(sum == 19){ 
     double tot = pru - (pru*.09); 
     String tot1 = String.valueOf(tot); 
    } 
    if(sum >= 20){ 
     double tot; 
     tot = pru - (pru*.1); 
     String tot1 = String.valueOf(tot); 
    } 

print tot1; 

ありがとうございます!

答えて

5

私はあなたがこれを読むことをお勧め:https://en.wikipedia.org/wiki/Scope_%28computer_science%29

短い答えは、あなたが何をしようとして行うことができないということです。 ifブロックから生まれた変数は、ifブロックを終了すると消えます。これは「範囲外の」変数として知られています。

問題を解決するには、変数をifブロックの外に宣言します。コード全体を再現することはできませんが、次のようになります。

int sum = uno + dos + tres + cuatro; 
double pru = sum*8; 
String tot1 = ""; 
if(sum == 11){ 
    double tot = pru - (pru*.01); 
    tot1 = String.valueOf(tot); 
} 
print tot1; 

すべてのif文でこれを実行してください。

+0

はまた、この特定のユースケースのために、彼はそれ数学に基づいて、すべてを行うことができますことに注意してください。 –

+0

ありがとう!それは本当に働いた! – AldoT

1

次のように私はすべてのif文の外TOT1定義することができことをお勧め:

String tot1; 
if (sum == 10) 
    ... 
    ... 
print tot1; 

あなたはTOT1が初期化されていない可能性があります警告を取得する可能性があります - あなたはどちらか(それの世話をする必要がありますそれにデフォルト値を割り当て、またはTOT1がnullであるかどうかを確認し、それに対処する)

2

あなたの全体のコードはpru変数のmulitplierがsumにこの関係を持っていることを認識することによって数行にまで低減することができます。

multiplier = (sum - 10)/100, for 11 <= sum <= 20 

本当に必要なのは、物事を処理する単一のif文です。

@Override 
public void onClick (View v){ 
    int sum = uno + dos + tres + cuatro; 
    double pru = sum*8; 
    String tot1 = ""; 
    if (sum >= 11 && sum <= 20) { 
     double multiplier = (sum - 10)/100.0; 
     double tot = pru - (pru * multiplier); 
     tot1 = String.valueOf(tot); 
    } 

    System.out.println(tot1); 
} 

そして、あなたはが本当にこれらすべてのifのステートメントが必要なかった場合は、よりよい方法は、それがswitchステートメントを使用することであろうハンドルに。そのことについてはhereを読むことができます。

1

あなたのためのヒント:同じコードを何度も何度も繰り返していると、間違ったことが起こります。あなたはプログラミングの際に常にこの文章をあなたの頭に入れておくべきです。

注:この例では、SINGLE if文を使用する必要があります。しかし、あなたを示す例として、将来的には、ループと呼ばれるものがあります。あなたのコードは、ループを使用してこのようなものになる可能性が

@Override 
public void onClick (View v){ 
    int sum = uno + dos + tres + cuatro; 
     double pru = sum*8; 
     double tot; 
     String tot1; 
    if(sum >= 20) 
    { 
     double tot; 
     tot = pru - (pru*.1); 
     String tot1 = String.valueOf(tot); 
    } 
    else 
    { 
     for (double x = 11, i = .01; x < 20; x++, i+=0.1) 
     { 
      if (sum == x) 
      { 
       tot = pru - (pru*i); 
       tot1 = String.valueOf(tot); 
      } 
     } 
    } 


print tot1; 

}