循环java.lang.IllegalStateException中的arraylist错误:无法为android执行方法:onClick

循环java.lang.IllegalStateException中的arraylist错误:无法为android执行方法:onClick,android,Android,我正试着做一个简单的计算器,但我遇到了一个错误。这是我的密码 public class MainActivity extends AppCompatActivity { TextView tvInput; String textcontent = ""; String input = ""; ArrayList<Integer> number = new ArrayList<Integer>(); ArrayList<Character> operator =

我正试着做一个简单的计算器,但我遇到了一个错误。这是我的密码

public class MainActivity extends AppCompatActivity {
TextView tvInput;
String textcontent = "";
String input = "";
ArrayList<Integer> number = new ArrayList<Integer>();
ArrayList<Character> operator = new ArrayList<Character>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tvInput= (TextView) findViewById(R.id.textView_input);
}


public void btn1(View view) {
    input = input + "1";
    tvInput.setText(input);
}

public void btn3(View view) {
    input = input + "3";
    tvInput.setText(input);
}

public void btn2(View view) {
    input = input + "2";
    tvInput.setText(input);
}


public void btn0(View view) {
    input = input + "0";
    tvInput.setText(input);
}

public void btn7(View view) {
    input = input + "7";
    tvInput.setText(input);
}

public void btn8(View view) {
    input = input + "8";
    tvInput.setText(input);
}
public void btn9(View view) {
    input = input + "9";
    tvInput.setText(input);
}
public void btn5(View view) {
    input = input + "5";
    tvInput.setText(input);
}
public void btn6(View view) {
    input = input + "6";
    tvInput.setText(input);
}
public void btnSub(View view) {
    number.add(Integer.parseInt(tvInput.getText().toString()));
    tvInput.setText("-");
    operator.add('-');
    input = "";
}
public void btnMul(View view) {
    number.add(Integer.parseInt(tvInput.getText().toString()));
    tvInput.setText("*");
    operator.add('*');
    input = "";
}
public void btnDiv(View view) {
    number.add(Integer.parseInt(tvInput.getText().toString()));
    tvInput.setText("/");
    operator.add('/');
    input = "";
}
public void btn4(View view) {
    input = input + "4";
    tvInput.setText(input);
}
public void btnAdd(View view) {
    number.add(Integer.parseInt(tvInput.getText().toString()));
    tvInput.setText("+");
    operator.add('+');
    input = "";
}
public void btnEqual(View view) {
    int result = 0;
    for(int i = 1; i <= number.size(); i++) {
        result = number.get(i - 1);
       if(operator.get(i - 1) == '+')
         result = result+number.get(i);  //error is here
        tvInput.setText("" + result);
    }
    }
}
public类MainActivity扩展了AppCompatActivity{
文本视图输入;
字符串textcontent=“”;
字符串输入=”;
ArrayList编号=新的ArrayList();
ArrayList运算符=新的ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvInput=(TextView)findViewById(R.id.TextView\u输入);
}
公共无效btn1(视图){
输入=输入+1;
tvInput.setText(输入);
}
公共无效btn3(视图){
输入=输入+3;
tvInput.setText(输入);
}
公共无效btn2(视图){
输入=输入+2;
tvInput.setText(输入);
}
公共无效btn0(视图){
输入=输入+0;
tvInput.setText(输入);
}
公共无效btn7(视图){
输入=输入+7;
tvInput.setText(输入);
}
公共无效btn8(视图){
输入=输入+8;
tvInput.setText(输入);
}
公共无效btn9(视图){
输入=输入+9;
tvInput.setText(输入);
}
公共无效btn5(视图){
输入=输入+5;
tvInput.setText(输入);
}
公共无效btn6(视图){
输入=输入+6;
tvInput.setText(输入);
}
公共无效btnSub(视图){
add(Integer.parseInt(tvInput.getText().toString());
tvInput.setText(“-”);
运算符。添加('-');
输入=”;
}
公共无效btnMul(视图){
add(Integer.parseInt(tvInput.getText().toString());
tvInput.setText(“*”);
运算符。添加('*');
输入=”;
}
公共无效btnDiv(视图){
add(Integer.parseInt(tvInput.getText().toString());
tvInput.setText(“/”);
运算符。添加(“/”);
输入=”;
}
公共无效btn4(视图){
输入=输入+4;
tvInput.setText(输入);
}
公共无效btnAdd(视图){
add(Integer.parseInt(tvInput.getText().toString());
tvInput.setText(“+”);
运算符。添加(“+”);
输入=”;
}
公共无效btnEqual(视图){
int结果=0;

对于(int i=1;i您将得到错误,因为
ArrayIndexOutofBound
在下面代码中的最后一个索引处

result=result+number.get(i);

在for循环中,您已经开始了i表单1,通过
i您得到了错误,因为
ArrayIndexOutofBound
在下面代码的最后一个索引中

result=result+number.get(i);

在for循环中,您已经启动了我的表格1,通过
i我也遇到了同样的问题。我不得不改变我的显示方式:

   private void DisplayB(int score) {
        TextView scoreView = findViewById(R.id.team_b_score);
        scoreView.setText(score);
为此:

   private void DisplayB(int score) {
        TextView scoreView = findViewById(R.id.team_b_score);
        scoreView.setText(String.valueOf(score));

我希望这能对您有所帮助。

我也遇到了同样的问题。我不得不改变我的显示方式:

   private void DisplayB(int score) {
        TextView scoreView = findViewById(R.id.team_b_score);
        scoreView.setText(score);
为此:

   private void DisplayB(int score) {
        TextView scoreView = findViewById(R.id.team_b_score);
        scoreView.setText(String.valueOf(score));

我希望这对你有帮助。

在你的代码中我没有看到任何一个OnCouter方法;它可能是需要的。也许考虑把整个StActTrAs而不仅仅是你认为可能是交叉的部分,请附加你的整个错误堆栈跟踪。但是我有一个问题,就是你在XM中连接你的按钮的<代码> OnCuts/<代码>的方式。您应该有类似于
onClick=“btn1()”的内容我在代码中没有看到任何OnClash方法;它可能是需要的。也许考虑将整个StActTrAs都贴在您认为可能是交叉的部分上,请附上您的整个错误堆栈跟踪。但是我有一种感觉,问题是您在XML文件中连接按钮的<代码> OnCuts/<代码>。您应该HAV。e类似于
onClick=“btn1()”