到达android中数组的最后一个元素后得到错误

时间:2016-01-01 07:05:05

标签: android arrays indexoutofboundsexception

我的数组到达最后一个索引后,我得到一个异常,说索引超出范围。我想做的是回到第一个索引。我怎么能这样做?

这是我的作品

String[] name = {"A", "B", "C", "D"};
Button buttonNext;
int i = 0;

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

    buttonNext = (Button) findViewById(R.id.buttonNext);
    buttonNext.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            i++;
            nextText(i);
        }
    });
}

private void nextText(int id) {
    Log.i("Name is ", name[id]);
}

3 个答案:

答案 0 :(得分:1)

将代码更改为此。

 String[] name = {"A", "B", "C", "D"};
    Button buttonNext;
    int i = 0;

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

        buttonNext = (Button) findViewById(R.id.buttonNext);
        buttonNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if(i < name.length-1)
                   i++;
                else
                   i=0;

                nextText(i);

            }
        });
    }

    private void nextText(int id) {
        Log.i("Name is ", name[id]);
    }

输出应如下。 第一次:名字是B. 第二次:名字是C 第三次:姓名是D. 第四时间:名字是A

答案 1 :(得分:0)

  buttonNext.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        nextText(i);
     if(i<name.length){
        i++;
         }else{
       i==0;
         }
     });
}

答案 2 :(得分:-1)

像这样添加支票

buttonNext.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            i++;
            if (i < name.length) nextText(i); //added if condition.
        }
    });