Логика работает в SWING , кидает NumberFormatException в ANDROID

package com.example.vhcalcandroid;

import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    TextView textView;

    Button button0;
    Button button1;
    Button button2;
    Button button3;
    Button button4;
    Button button5;
    Button button6;
    Button button7;
    Button button8;
    Button button9;
    Button buttonPlus;
    Button buttonMinus;
    Button buttonDivide;
    Button multiply;
    Button buttonDot;
    Button buttonC;
    Button buttonDel;
    Button buttonResult;

    static double number1 = 0;
    static double number2 = 0;
    //static double memory = 0;
    static double result = 0;

    static char operation = '0';

    static StringBuilder stringBuilder = new StringBuilder();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = findViewById(R.id.textView);
        button0 = findViewById(R.id.button0);
        button1 = findViewById(R.id.button1);
        button2 = findViewById(R.id.button2);
        button3 = findViewById(R.id.button3);
        button4 = findViewById(R.id.button4);
        button5 = findViewById(R.id.button5);
        button6 = findViewById(R.id.button6);
        button7 = findViewById(R.id.button7);
        button8 = findViewById(R.id.button8);
        button9 = findViewById(R.id.button9);
        buttonPlus = findViewById(R.id.buttonPlus);
        buttonMinus = findViewById(R.id.buttonMinus);
        buttonDivide = findViewById(R.id.buttonDivide);
        multiply = findViewById(R.id.multiply);
        buttonDot = findViewById(R.id.buttonDot);
        buttonC = findViewById(R.id.buttonC);
        buttonDel = findViewById(R.id.buttonDel);
        buttonResult = findViewById(R.id.buttonResult);

        button0.setOnClickListener(this);
        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
        button3.setOnClickListener(this);
        button4.setOnClickListener(this);
        button5.setOnClickListener(this);
        button6.setOnClickListener(this);
        button7.setOnClickListener(this);
        button8.setOnClickListener(this);
        button9.setOnClickListener(this);
        buttonPlus.setOnClickListener(this);
        buttonMinus.setOnClickListener(this);
        buttonDivide.setOnClickListener(this);
        multiply.setOnClickListener(this);
        buttonDot.setOnClickListener(this);
        buttonC.setOnClickListener(this);
        buttonResult.setOnClickListener(this);

        textView.setText("0");
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button0 : {

                'stringBuilder.append("0");'
                'textView.setText(stringBuilder.toString());'
                'number1 = Double.parseDouble(stringBuilder.toString());'
            }
            case R.id.button1 : {
                stringBuilder.append("1");
                textView.setText(stringBuilder.toString());
                number1 = Double.parseDouble(stringBuilder.toString());
            }
            case R.id.button2 : {
                stringBuilder.append("2");
                textView.setText(stringBuilder.toString());
                number1 = Double.parseDouble(stringBuilder.toString());
            }
            case R.id.button3 : {
                stringBuilder.append("3");
                textView.setText(stringBuilder.toString());
                number1 = Double.parseDouble(stringBuilder.toString());
            }
            case R.id.button4 : {
                stringBuilder.append("4");
                textView.setText(stringBuilder.toString());
                number1 = Double.parseDouble(stringBuilder.toString());
            }
            case R.id.button5 : {
                stringBuilder.append("5");
                textView.setText(stringBuilder.toString());
                number1 = Double.parseDouble(stringBuilder.toString());
            }
            case R.id.button6 : {
                stringBuilder.append("6");
                textView.setText(stringBuilder.toString());
                number1 = Double.parseDouble(stringBuilder.toString());
            }
            case R.id.button7 : {
                stringBuilder.append("7");
                textView.setText(stringBuilder.toString());
                number1 = Double.parseDouble(stringBuilder.toString());
            }
            case R.id.button8 : {
                stringBuilder.append("8");
                textView.setText(stringBuilder.toString());
                number1 = Double.parseDouble(stringBuilder.toString());
            }
            case R.id.button9 : {
                stringBuilder.append("9");
                textView.setText(stringBuilder.toString());
                number1 = Double.parseDouble(stringBuilder.toString());
            }
            case R.id.buttonPlus : {
                stringBuilder.delete(0,stringBuilder.length());
                textView.setText("+");
                number2 = number1;
                operation = '+';

            }
            case R.id.buttonMinus : {
                stringBuilder.delete(0,stringBuilder.length());
                textView.setText("-");
                number2 = number1;
                operation = '-';

            }
            case R.id.buttonDivide : {
                stringBuilder.delete(0,stringBuilder.length());
                textView.setText("/");
                number2 = number1;
                operation = '/';
            }
            case R.id.multiply : {
                stringBuilder.delete(0,stringBuilder.length());
                textView.setText("*");
                number2 = number1;
                operation = '*';
            }
            case R.id.buttonDot : {
                stringBuilder.append(".");
                textView.setText(stringBuilder.toString());
                number1 = Double.parseDouble(stringBuilder.toString());
            }
            case R.id.buttonC : {
                stringBuilder.delete(0,stringBuilder.capacity());
                textView.setText("0");
            }
            case R.id.buttonDel : {
                if(stringBuilder.length() > 0)
                stringBuilder.deleteCharAt(stringBuilder.length()-1);
                textView.setText(stringBuilder.toString());
                number1 = Double.parseDouble(stringBuilder.toString());
                break;}
            case R.id.buttonResult : {
                BigDecimal bigDecimal2 = new BigDecimal(String.valueOf(number2));
                BigDecimal bigDecimal1 = new BigDecimal(String.valueOf(number1));
                switch (operation){
                    case '+': result = number2 + number1;break;
                    case '-': result = number2 - number1;break;
                    case '*': result = Double.parseDouble(bigDecimal2.multiply(bigDecimal1).toString());break;
                    case '/': result = Double.parseDouble(bigDecimal2.divide(bigDecimal1,7, RoundingMode.HALF_UP).toString());break;
                }

                String tempText = String.valueOf(result);
                String resultText = "";
                if((tempText.charAt(tempText.length()-1) == '0')){
                    resultText = tempText.substring(0,tempText.length() - 2);
                    textView.setText(resultText);
                }
                else {
                    textView.setText(tempText);
                }
                operation = '0';
                number1 = 0;
                number1 = result;

            }
        }
    }
}

Ответы (1 шт):

Автор решения: Moskit

Заменил имплементацию View.OnClickLIstener на лямбды - все заработало.

→ Ссылка