###前提・実現したいこと
ここに質問したいことを詳細に書いてください
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
###発生している問題・エラーメッセージ
Androidアプリ開発についての質問です。 Android Studioで、アプリを作る練習として計算機アプリを作っているのですが、 エラーが解決できなくて困っています。 ソースコードは下に書いてある通りなのですが、 これをAndroid Studioで実行しようとすると、 switch文の中のcase '+'のところのbreak文の下にエラーの赤線が出てきて、 「到達不能なステートメントです。」と表示されてしまいます。 僕がこのプログラムの中のエラーが起こっている部分でやりたいのは、 4つのラジオボタンで四則演算の+-×÷を管理して、 「計算」ボタンを押すと計算結果が表示させるようにすることです。 なので、ラジオボタンのテキストを読み取って条件分岐しようと思ったのですが、うまくいきませんでした。 ぜひ回答お願いいたします。
###該当のソースコード
Java
1package com.example.aaaa.calculator; 2 3import android.support.v7.app.AppCompatActivity; 4import android.os.Bundle; 5import android.text.Editable; 6import android.text.TextUtils; 7import android.text.TextWatcher; 8import android.widget.EditText; 9import android.widget.RadioGroup; 10import android.widget.RadioButton; 11 12public class MainActivity extends AppCompatActivity implements TextWatcher{ 13 14 private EditText numberInput1,numberInput2,result; 15 16 @Override 17 protected void onCreate(Bundle savedInstanceState) { 18 super.onCreate(savedInstanceState); 19 setContentView(R.layout.activity_main); 20 21 //EditText1内の数字を取得 22 numberInput1 = (EditText) findViewById(R.id.number1); 23 //EditText1内の文字入力イベントを受け取る 24 numberInput1.addTextChangedListener(this); 25 26 //EditText2内の数字を取得 27 numberInput2 = (EditText) findViewById(R.id.number2); 28 //EditText2内の文字入力イベントを受け取る 29 numberInput2.addTextChangedListener(this); 30 31 //計算結果が表示されるテキストエリアのidを取得する 32 result=(EditText)findViewById(R.id.result); 33 34 35 } 36 37 //2つのEditTextに入力がされているかをチェックする 38 //あとでif文の中に入れるために真偽型で定義する 39 public boolean checkEditTextInput(){ 40 String Input1=numberInput1.getText().toString(); 41 String Input2=numberInput2.getText().toString(); 42 43 return !TextUtils.isEmpty(Input1)&&!TextUtils.isEmpty(Input2); 44 } 45 46 47 48 49 @Override 50 public void beforeTextChanged(CharSequence s,int start,int before,int after){ 51 52 53 } 54 55 @Override 56 public void onTextChanged(CharSequence s,int start,int before,int count){ 57 58 } 59 60 //テキストが変更した後に呼び出される 61 @Override 62 public void afterTextChanged(Editable s){ 63 //ここに処理内容を書いてもいいのだが、見やすくするために新しく関数を作る 64 refreshResult(); 65 66 } 67 68 private void refreshResult(){ 69 if(checkEditTextInput()){ 70 //trueならば計算を行う 71 //計算も、見やすくするために新しく関数を作ってから使う 72 int result_num=calc(); 73 74 String resultText=getString(R.string.calc_result,result_num); 75 result.setText(resultText); 76 }else{ 77 //どちらかが入力されていない状態の場合、計算欠課用の表示をデフォルトに戻す 78 result.setText(R.string.result); 79 } 80 } 81 82 private int calc(){ 83 //入力内容を取得する 84 String input1=numberInput1.getText().toString(); 85 String input2=numberInput2.getText().toString(); 86 87 //取得した入力内容を整数型に変換する 88 int numberinput1=Integer.parseInt(input1); 89 int numberinput2=Integer.parseInt(input2); 90 91 //どのラジオボタンが選択されているか確認するとともに、条件分岐 92 93 //ラジオグループのオブジェクトを取得 94 RadioGroup rg=(RadioGroup)findViewById(R.id.RadioGroup); 95 //どのラジオボタンが選択されているかを取得 96 int id=rg.getCheckedRadioButtonId(); 97 //選択されたラジオボタンのidを取得 98 RadioButton radiobutton=(RadioButton)findViewById(id); 99 100 String str=radiobutton.getText().toString(); 101 char aText =str.charAt(0); 102 103 switch(aText){ 104 case '+': 105 return numberinput1+numberinput2; 106 break; 107 case '-': 108 return numberinput1-numberinput2; 109 break; 110 case '×': 111 return numberinput1*numberinput2; 112 break; 113 case '÷': 114 return numberinput1/numberinput2; 115 break; 116 default: 117 throw new RuntimeException(); 118 } 119 120 121 } 122} 123
###試したこと
型を文字列型にして比較したり、文字型にしたり、整数型にしたりして試しましたが、うまくいきませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
android studioは最新版のはずです。
言語はJavaです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。