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 计数到远 -> get.length() 给出 ua 长度(例如)5,因此您的索引从 0 到 4。但是在您的循环中,您也尝试访问索引 5,因为“< = ”。只需将其更改为“<”,它应该可以工作

于 2013-10-10T08:01:17.997 回答