Java 当试图通过循环访问charsequence元素时,应用程序没有响应
我在试着做一个计算器,它能解出像30+55-(2+7-20)这样的长表达式 但我的平等按钮有一些逻辑问题。。。贝基 我已经测试过这个逻辑问题,但无法理解。非常感谢您的帮助。这是我的密码Java 当试图通过循环访问charsequence元素时,应用程序没有响应,java,android,charsequence,Java,Android,Charsequence,我在试着做一个计算器,它能解出像30+55-(2+7-20)这样的长表达式 但我的平等按钮有一些逻辑问题。。。贝基 我已经测试过这个逻辑问题,但无法理解。非常感谢您的帮助。这是我的密码 beq.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method st
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");}
}
}
});
beq.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
如果(状态==1){
get=tvdisp1.getText();//tvdisp1表示textView顶部表达式栏
//tvdisp2.setText(get);//tvdisp2表示第二个文本视图答案栏
if(get.charAt(0)='x'){status=0;}//检查语法错误
如果(get.charAt(0)='÷'){status=0;}//相同
对于(int i=0;i obracs_c){status=0;}//如果结束括号的数量>开始括号
if(status==0){tvdisp1.setText(“语法错误AC to reset”);}
}
}
});
正如Jon Skeet所说。
计算1到far->get.length()会给你一个长度(例如)5,所以索引从0到4。但在您的循环中,您也尝试访问索引5,因为“您的循环将引发异常,因为您正在使用
oh,您的意思是我正在访问未经授权的数组(charSequence)?这不是“未经授权”的问题“-这是一个出界的问题。但是你应该在日志中看到异常…是的。我得到了它。问题已解决:)谢谢您可能正在寻找此链接: