現在、四則計算アプリを作成しています。
MainActivity.java
package
1 2import android.os.Bundle; 3import android.support.v7.app.AppCompatActivity; 4import android.view.View; 5import android.widget.Button; 6import android.widget.EditText; 7import android.widget.TextView; 8import java.math.BigDecimal; 9 10public class MainActivity extends AppCompatActivity implements View.OnClickListener { 11 12 TextView mTextView; 13 EditText mEditText; 14 15 @Override 16 protected void onCreate(Bundle savedInstanceState) { 17 super.onCreate(savedInstanceState); 18 setContentView(R.layout.activity_main); 19 20 Button button1 = (Button) findViewById(R.id.button1); 21 button1.setOnClickListener(this); 22 23 Button button2 = (Button) findViewById(R.id.button2); 24 button2.setOnClickListener(this); 25 26 Button button3 = (Button) findViewById(R.id.button3); 27 button3.setOnClickListener(this); 28 29 Button button4 = (Button) findViewById(R.id.button4); 30 button4.setOnClickListener(this); 31 32 mTextView = (TextView) findViewById(R.id.textView1); 33 mEditText = (EditText) findViewById(R.id.editText1); 34 mEditText = (EditText) findViewById(R.id.editText2); 35 } 36 37 @Override 38 public void onClick(View v) { 39 40 /*Intent intent = new Intent(this, SecondActivity.class); 41 intent.putExtra("VALUE1", 10.5); 42 intent.putExtra("VALUE2", 2.5); 43 startActivity(intent);*/ 44 EditText editText1 = (EditText)findViewById(R.id.editText1); 45 EditText editText2 = (EditText)findViewById(R.id.editText2); 46 TextView textView1 = (TextView)findViewById(R.id.textView1); 47 48 String str1 = editText1.getText().toString(); 49 String str2 = editText2.getText().toString(); 50 BigDecimal a = new BigDecimal(str1); 51 BigDecimal b = new BigDecimal(str2); 52 if(v.getId() == R.id.button1){ 53 BigDecimal c = a.add(b); 54 textView1.setText(String.valueOf(c)); 55 }else if(v.getId() == R.id.button2){ 56 BigDecimal c = a.subtract(b); 57 textView1.setText(String.valueOf(c)); 58 }else if(v.getId() == R.id.button3){ 59 BigDecimal c = a.multiply(b); 60 textView1.setText(String.valueOf(c)); 61 }else if(v.getId() == R.id.button4){ 62 BigDecimal c = a.divide(b,2, BigDecimal.ROUND_HALF_UP); 63 textView1.setText(String.valueOf(c)); 64 } 65 } 66}
現在のコードは上記の通りです。
現在の問題点は、NumberFormatException: Bad offset/length: offset=0 len=0 in.length=0が表示されています。
エラーの内容は、以下のようになっています。
Process:
1 java.lang.NumberFormatException: Bad offset/length: offset=0 len=0 in.length=0 2 at java.math.BigDecimal.<init>(BigDecimal.java:276) 3 at java.math.BigDecimal.<init>(BigDecimal.java:425) 4 at jp.techacademy.kazutaka.fuse.calcapp.MainActivity.onClick(MainActivity.java:51) 5 at android.view.View.performClick(View.java:4756) 6 at android.view.View$PerformClick.run(View.java:19749) 7 at android.os.Handler.handleCallback(Handler.java:739) 8 at android.os.Handler.dispatchMessage(Handler.java:95) 9 at android.os.Looper.loop(Looper.java:135) 10 at android.app.ActivityThread.main(ActivityThread.java:5221) 11 at java.lang.reflect.Method.invoke(Native Method) 12 at java.lang.reflect.Method.invoke(Method.java:372) 13 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 14 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
NumberFormatExceptionは、文字列を数値型に変換しようとしたとき、文字列の形式が正しくない場合に表示されると書いていますが、コードを見ると、そのような間違いは無いように思われますが、もしかすると、51行目の箇所が引っ掛かるかもしれません。
BigDecimal a = new BigDecimal(str1);
ここの箇所です。
どこを直せば解決できますか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/17 07:24 編集
2017/12/17 08:58
2017/12/17 09:16
2017/12/17 10:02
2017/12/17 10:26
2017/12/17 12:06
2017/12/17 12:48 編集