1

30+55-(2+7-20) のような長い式を解くことができる電卓を作ろうとしています。

しかし、イコールボタンに論理的な問題があります... beq

論理的な問題が for ループにあることをテストしましたが、理解できませんでした。どんな助けでも大歓迎です。ここに私のコードがあります

    beq.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if (status==1){
            get=tvdisp1.getText();                          //tvdisp1 represents textView top expression bar
    //      tvdisp2.setText(get);                           //tvdisp2 represents 2nd textView answer bar
            if(get.charAt(0)=='x') {status=0;}              //to check for syntax error
            if(get.charAt(0)=='÷') {status=0;}              // same

            for(int i =0; i <= get.length(); i++ ) {        // loop to check if the first character is digit or character.
                if (Character.isDigit(get.charAt(i))) {
                    //is digit
                } 
                else {
                    //is operator

                }
            }

            if (cbracq_c>obracs_c){status=0;}               // if number of closing brackets > opening brackets
            if ( status == 0 ) { tvdisp1.setText("Syntax Error AC to reset");}
            }
        }
    });
4

1 に答える 1

2

ジョン・スキートが言った通りです。1 から far までカウントします -> get.length() は ua の長さ (たとえば) 5 を与えるため、0 から 4 までのインデックスがあります。「<」に変更するだけで機能するはずです

于 2013-10-10T08:01:17.997 に答える