android - ошибка java.lang.NumberFormatException: для входной строки программа перестает работать - PullRequest
0 голосов
/ 06 октября 2019

Так выглядит код: сначала он работал правильно, но после добавления новых функций кнопок этот сегмент кода не работал должным образом, как раньше. Пожалуйста, помогите мне, у меня есть представление в среду на этой неделе. Возможно, это ошибка?

package com.example.calculator;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;


public class MainActivity extends AppCompatActivity{
    TextView txtbtn;
    float mValueOne, mValueTwo;
    double a;
    double ans=0;
    boolean mAddition, mSubtract, mMultiplication, mDivision, mArithmetic, mReminder,
    power2nd, mSin, mCos, mTan, mSinH, mCosH, mTanH;
    ImageButton deletebutton;
    Button clearbutton, dividebutton, multiplybutton, button7, button8, button9, minusbutton,
            button4, button5, button6, plusbutton, button1, button2, button3, button0, pointbutton,
            equalbutton, xcubebutton, squarebutton, modulusbutton, exponentbutton, tenexponentbutton,
            piebutton, squarerootbutton, cuberootbutton, stpower2nd, xfactorialbutton, logbutton, lnbutton,
            sinbutton, cosbutton, tanbutton, sinhbutton, coshbutton, tanhbutton, oneoverxbutton, absbutton,
            floorbutton;


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

        View decorView = getWindow().getDecorView();
        decorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                //| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
                //| View.SYSTEM_UI_FLAG_FULLSCREEN);

        scientific_operation();

    }
    public void scientific_operation(){
        txtbtn = findViewById(R.id.txt);
        deletebutton = findViewById(R.id.BB);
        clearbutton = findViewById(R.id.C);
        dividebutton = findViewById(R.id.Bdivide);
        multiplybutton = findViewById(R.id.Bmulti);
        button7 = findViewById(R.id.B7);
        button8 = findViewById(R.id.B8);
        button9 = findViewById(R.id.B9);
        minusbutton = findViewById(R.id.Bsubtract);
        button4 = findViewById(R.id.B4);
        button5 = findViewById(R.id.B5);
        button6 = findViewById(R.id.B6);
        plusbutton = findViewById(R.id.Bplus);
        button1 = findViewById(R.id.B1);
        button2 = findViewById(R.id.B2);
        button3 = findViewById(R.id.B3);
        button0 = findViewById(R.id.B0);
        pointbutton = findViewById(R.id.MCdot);
        equalbutton = findViewById(R.id.Bequal);
        cuberootbutton = findViewById(R.id.cuberoot);
        squarerootbutton = findViewById(R.id.squareroot);
        xcubebutton = findViewById(R.id.powerX3);
        squarebutton = findViewById(R.id.powerX2);
        modulusbutton = findViewById(R.id.Bmod);
        exponentbutton = findViewById(R.id.expower);
        tenexponentbutton = findViewById(R.id.X10X);
        piebutton = findViewById(R.id.pi);
        oneoverxbutton = findViewById(R.id.onebyx);
        xfactorialbutton = findViewById(R.id.xfactorial);
        stpower2nd = findViewById(R.id.power2nd);
        logbutton = findViewById(R.id.log);
        lnbutton = findViewById(R.id.ln);
        sinhbutton = findViewById(R.id.arcsin);
        coshbutton = findViewById(R.id.arccos);
        tanhbutton = findViewById(R.id.arctan);
        sinbutton = findViewById(R.id.sin);
        cosbutton = findViewById(R.id.cos);
        tanbutton = findViewById(R.id.tan);
        absbutton = findViewById(R.id.abs);
        floorbutton = findViewById(R.id.floor);


        absbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    a = Math.abs(Double.parseDouble(txtbtn.getText().toString()));
                    txtbtn.setText("");
                    txtbtn.setText(txtbtn.getText().toString() + a);

                }
                catch(Exception e){
                    //
                }
            }
        });

        floorbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{
                    a = Math.floor(Double.parseDouble(txtbtn.getText().toString()));
                    txtbtn.setText("");
                    txtbtn.setText(txtbtn.getText().toString() + a);
                }
                catch(Exception e){
                    //
                }
            }
        });

        stpower2nd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{
                    mValueOne = Float.parseFloat(txtbtn.getText() + "");
                    power2nd = true;
                    txtbtn.setText(null);
                }
                catch(Exception e){
                    //
                }
            }
        });

        deletebutton.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
                try{
                    String str;
                    str = txtbtn.getText().toString();
                    str = str.substring(0, str.length()-1);
                    txtbtn.setText(str);
                }
                catch(Exception e){
                    //
                }
            }
        });

        clearbutton.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
                txtbtn.setText("");
            }
        });

        dividebutton.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
                txtbtn.setText(null);
            }
        });

        button1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                txtbtn.setText(txtbtn.getText()+ "1");
                mArithmetic = true;
            }
        });

        button2.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                txtbtn.setText(txtbtn.getText()+ "2");
                mArithmetic = true;
            }
        });

        button3.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                txtbtn.setText(txtbtn.getText()+ "3");
                mArithmetic = true;
            }
        });

        button4.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                txtbtn.setText(txtbtn.getText()+ "4");
                mArithmetic = true;
            }
        });

        button5.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                txtbtn.setText(txtbtn.getText()+ "5");
                mArithmetic = true;
            }
        });

        button6.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                txtbtn.setText(txtbtn.getText()+ "6");
                mArithmetic = true;
            }
        });

        button7.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                txtbtn.setText(txtbtn.getText()+ "7");
                mArithmetic = true;
            }
        });

        button8.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                txtbtn.setText(txtbtn.getText()+ "8");
                mArithmetic = true;
            }
        });

        button9.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                txtbtn.setText(txtbtn.getText()+ "9");
                mArithmetic = true;
            }
        });

        button0.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                txtbtn.setText(txtbtn.getText()+ "0");
                mArithmetic = true;
            }
        });

        plusbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{
                    mValueOne = Float.parseFloat(txtbtn.getText() + "");
                    mAddition = true;
                    txtbtn.setText(null);
                }
                catch(Exception e){
                    //
                }
            }
        });

        minusbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{
                    mValueOne = Float.parseFloat(txtbtn.getText() + "");
                    mSubtract = true;
                    txtbtn.setText(null);
                }
                catch(Exception e){
                    //
                }
            }
        });

        multiplybutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{
                    mValueOne = Float.parseFloat(txtbtn.getText() + "");
                    mMultiplication = true;
                    txtbtn.setText(null);
                }
                catch(Exception e){
                    //
                }
            }
        });

        dividebutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{
                    mValueOne = Float.parseFloat(txtbtn.getText() + "");
                    mDivision = true;
                    txtbtn.setText(null);
                }
                catch(Exception e){
                    //
                }
            }
        });

        cuberootbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{
                    a = Math.cbrt(Double.parseDouble(txtbtn.getText().toString()));
                    txtbtn.setText("");
                    txtbtn.setText(txtbtn.getText().toString() + a);
                }
                catch(Exception e){
                    //
                }
            }
        });

        squarerootbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{
                    a = Math.sqrt(Double.parseDouble(txtbtn.getText().toString()));
                    txtbtn.setText("");
                    txtbtn.setText(txtbtn.getText().toString() + a);
                }
                catch(Exception e){
                    //
                }
            }
        });

        xcubebutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{
                    a = Math.pow(Double.parseDouble(txtbtn.getText().toString()), 3);
                    txtbtn.setText("");
                    txtbtn.setText(txtbtn.getText().toString() + a);
                }
                catch(Exception e){
                    //
                }
            }
        });

        squarebutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{
                    a = Math.pow(Double.parseDouble(txtbtn.getText().toString()), 2);
                    txtbtn.setText("");
                    txtbtn.setText(txtbtn.getText().toString() + a);
                }
                catch(Exception e){
                    //
                }
            }
        });

        modulusbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{
                    mValueOne = Float.parseFloat(txtbtn.getText() + "");
                    mReminder = true;
                    txtbtn.setText(null);
                }
                catch(Exception e){
                    //
                }
            }
        });

        exponentbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{
                    a = Math.exp(Double.parseDouble(txtbtn.getText().toString()));
                    txtbtn.setText("");
                    txtbtn.setText(txtbtn.getText().toString() + a);
                }
                catch(Exception e){
                    //
                }
            }
        });

        tenexponentbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{
                    int n = Integer.parseInt(txtbtn.getText().toString());
                    int exp = (int) Math.pow(10,n);
                    txtbtn.setText(exp + "");
                }
                catch(Exception e){
                    //
                }
            }
        });

        piebutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                txtbtn.setText(Math.PI + "");

            }
        });

        oneoverxbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{
                    a = 1/Double.parseDouble(txtbtn.getText().toString());
                    txtbtn.setText("");
                    txtbtn.setText(txtbtn.getText().toString() + a);
                }
                catch(Exception e){
                    //
                }
            }
        });

        xfactorialbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{
                    a = Double.parseDouble(txtbtn.getText().toString());
                    int er = 0; double i, s = 1;
                    if(a < 0){
                        er = 20;
                    }
                    else{
                        for(i = 2; i <= a; i += 1.0)
                            s *= i;
                    }
                    txtbtn.setText("");
                    txtbtn.setText(txtbtn.getText().toString() + s);
                }
                catch(Exception e){
                    //
                }
            }
        });

        logbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{
                    a = Math.log10(Double.parseDouble(txtbtn.getText().toString()));
                    txtbtn.setText("");
                    txtbtn.setText(txtbtn.getText().toString() + a);
                }
                catch(Exception e){
                    //
                }
            }
        });

        lnbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    a = Math.log(Double.parseDouble(txtbtn.getText().toString()));
                    txtbtn.setText("");
                    txtbtn.setText(txtbtn.getText().toString() + a);
                }
                catch(Exception e) {
                    //
                }
            }
        });

        sinhbutton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                txtbtn.setText("arc_sin");
                mSinH = true;
            }
        });

        coshbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                txtbtn.setText("arc_cos");
                mCosH = true;
            }
        });

        tanhbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                txtbtn.setText("arc_tan");
                mTanH = true;
            }
        });

        sinbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                txtbtn.setText("sin");
                mSin = true;
            }
        });

        cosbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                txtbtn.setText("cos");
                mCos = true;
            }
        });

        tanbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                txtbtn.setText("tan");
                mTan = true;
            }
        });

        exponentbutton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                try{
                    Double n = Double.parseDouble(txtbtn.getText().toString());
                    Double exp = Math.pow(2.718281828, n);
                    txtbtn.setText(exp + "");
                }
                catch(Exception e){
                    //
                }
            }
        });

        equalbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(mSinH){
                    if(mArithmetic){
                        String str;
                        str = txtbtn.getText().toString();
                        str = str.substring(4);
                        a = Math.asin(Double.parseDouble(str));
                        txtbtn.setText(a + "");
                        mArithmetic = false;
                        mSinH = false;

                    }
                }
                if(mCosH){
                    if(mArithmetic){
                        String str;
                        str = txtbtn.getText().toString();
                        str = str.substring(4);
                        a = Math.acos(Double.parseDouble(str));
                        txtbtn.setText(a + "");
                        mArithmetic = false;
                        mCosH = false;

                    }
                }
                if(mTanH){
                    if(mArithmetic){
                        String str;
                        str = txtbtn.getText().toString();
                        str = str.substring(4);
                        a = Math.atan(Double.parseDouble(str));
                        txtbtn.setText(a + "");
                        mArithmetic = false;
                        mTanH = false;

                    }
                }

                if(mAddition){
                    mValueTwo = Float.parseFloat(txtbtn.getText() + "");
                    txtbtn.setText(mValueOne + mValueTwo + "");
                    mAddition = false;
                }

                if(mSubtract){
                    mValueTwo = Float.parseFloat(txtbtn.getText() + "");
                    txtbtn.setText(mValueOne - mValueTwo + "");
                    mSubtract = false;
                }

                if(mMultiplication){
                    mValueTwo = Float.parseFloat(txtbtn.getText() + "");
                    txtbtn.setText(mValueOne * mValueTwo + "");
                    mMultiplication = false;

                }
                if(mDivision){
                    mValueTwo = Float.parseFloat(txtbtn.getText() + "");
                    txtbtn.setText(mValueOne / mValueTwo + "");
                    mDivision = false;
                }
                if(mReminder){
                    mValueTwo = Float.parseFloat(txtbtn.getText() + "");
                    txtbtn.setText(mValueOne % mValueTwo + "");
                    mReminder = false;
                }
                if(power2nd){
                    mValueTwo = Float.parseFloat(txtbtn.getText() + "");
                    double exp = Math.pow(mValueOne, mValueTwo);
                    txtbtn.setText(exp + "");
                    power2nd = false;
                }

                if(mSin){
                    if(mArithmetic){
                        String str;
                        str = txtbtn.getText().toString();
                        str = str.substring(3);
                        a = Math.sin(Double.parseDouble(str));
                        txtbtn.setText(a + "");
                        mArithmetic = false;
                        mSin = false;
                    }
                }
                if(mCos){
                    if(mArithmetic){
                        String str;
                        str = txtbtn.getText().toString();
                        str = str.substring(3);
                        a = Math.cos(Double.parseDouble(str));
                        txtbtn.setText(a + "");
                        mArithmetic = false;
                        mCos = false;
                    }
                }
                if(mTan){
                    if(mArithmetic){
                        String str;
                        double a;
                        str = txtbtn.getText().toString();
                        str = str.substring(3);
                        a = Math.tan(Float.parseFloat(str));
                        txtbtn.setText(a + "");
                        mArithmetic = false;
                        mTan = false;
                    }
                }
                ans = Double.parseDouble(txtbtn.getText().toString());
            }
        });

        pointbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                txtbtn.setText(txtbtn.getText() + ".");
            }
        });

    }

}

Это ошибка программы, которую она показала, я пытался найти несколько вопросов на этой странице, но на самом деле я не получил ожидаемый ответ

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.calculator, PID: 1574
    java.lang.NumberFormatException: For input string: "sin1"
        at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
        at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
        at java.lang.Double.parseDouble(Double.java:538)
        at com.example.calculator.MainActivity$40.onClick(MainActivity.java:536)
        at android.view.View.performClick(View.java:7125)
        at android.view.View.performClickInternal(View.java:7102)
        at android.view.View.access$3500(View.java:801)
        at android.view.View$PerformClick.run(View.java:27336)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...