2012-02-11 5 views
0

私はJava switch文を使用して、変数を呼び出すボタンのIDに基づいて変数に異なる値を割り当てています。Android R.java IDスイッチは常にデフォルトを与えます

問題は、それが常に詳細に評価されることです。

私はID(R.javaビット)を取得している方法でエラーが発生する可能性がありますが、私はいくつかのインターネット調査を行っており、それを行うのに適切な方法を見つけることができません。 caseは、その下のコードを達した後

これは私のコード(それは働いていなかったならば、それは明らかだったので-9923がある)swicth構築物で

public void rootMe(View v){ 

/* I got rid of some code here so it was shorter */ 

    int mult = -99; 

    int buttonId = v.getId(); 

    switch(buttonId) 
    { 
    case R.id.root2: 
     mult = 1/2; 
    case R.id.root3: 
     mult = 1/3; 
    case R.id.root4: 
     mult = 1/4; 
    case R.id.root5: 
     mult = 1/5; 
    case R.id.root6: 
     mult = 1/6; 
    default: 
     mult = 23; 
    } 

答えて

4

、あるcaseたとえ別のcase文があっても実行されます。

あなたは実行が(switch構文を終了する)を停止する場合は、あなたはbreakステートメントを使用する必要があります。おそらくあなたのcaseブロックの各1の終わりに:

switch(buttonId) 
{ 
    case R.id.root2: 
     mult = 1/2; 
     break; 
    case R.id.root3: 
     mult = 1/3; 
     break; 
    case R.id.root4: 
     mult = 1/4; 
     break; 
    case R.id.root5: 
     mult = 1/5; 
     break; 
    case R.id.root6: 
     mult = 1/6; 
     break; 
    default: 
     mult = 23; 
     break; 
} 

この方法で、caseの文に対応するコードが実行されると、それはもはや、次のcaseの文に対応するコードを実行しませんswitch構成を終了します。


これはアンドロイド特有ではないことに注意してください。これは、switchの文がJAVAで動作する方法です。例を参照してください:The switch Statement

1

あなたはbreakでした。すべてのケースの後にbreakステートメントを置く必要があります。そのため、caseの実行とテストは継続しません。 。 。もっとここに

switch(buttonId) 
    { 
    case R.id.root2: 
     mult = 1/2; 
     break; 
    case R.id.root3: 
     mult = 1/3; 
     break; 
    case R.id.root4: 
     mult = 1/4; 
     break; 
    case R.id.root5: 
     mult = 1/5; 
     break; 
    case R.id.root6: 
     mult = 1/6; 
     break; 
    default: 
     mult = 23; 
    } 

読む:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

関連する問題