【问题标题】:IndexOutOfBoundsException error in android studio [duplicate]android studio中的IndexOutOfBoundsException错误[重复]
【发布时间】:2017-05-09 11:28:29
【问题描述】:

我已经构建了一个应用程序,代码是正确的。我仍然收到

的错误

java.lang.IndexOutOfBoundsException:索引 7 无效,大小为 7

每当我运行应用程序时。不知道是什么问题

我检查了很多解决方案,但没有任何帮助。

我的代码是

    public class Lecture extends AppCompatActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_lecture);
    List<List<String>> arrayOfListsA= new ArrayList<List<String>>();

    SharedPreferences sharedPreferences=getSharedPreferences("MyData",MODE_PRIVATE);
    String username=sharedPreferences.getString("username","NA");
    String password=sharedPreferences.getString("password","NA");
    TextView av=(TextView)findViewById(R.id.tvavg);


    double sub=0,subt=0,prd=0,sec=0,btch=0,day=0,date=0;

    try {
        arrayOfListsA = new HttpGetLecture().execute(username,password).get();
        List<String> subject = new ArrayList<String>();
        List<String> subjecttype = new ArrayList<String>();
        List<String> period = new ArrayList<String>();
        List<String> section = new ArrayList<String>();
        List<String> batch = new ArrayList<String>();
        List<String> day1 = new ArrayList<String>();
        List<String> date1 = new ArrayList<String>();

        GridView gridView=(GridView) findViewById(R.id.gridLect1);
        subject = arrayOfListsA.get(1);
        subjecttype = arrayOfListsA.get(2);
        day1= arrayOfListsA.get(3);
        period= arrayOfListsA.get(4);
        date1= arrayOfListsA.get(5);
        section= arrayOfListsA.get(6);
        batch= arrayOfListsA.get(7);



        /*for(int i=0;i<subject.size();i++) {
            sub = sub + parseInt(subject.get(i));

        } */

           /* for(int j=0;j<subjecttype.size();j++){
            subt=subt+ parseInt(subjecttype.get(j));


        }
        for(int k=0;k<period.size();k++){
            prd=prd+ parseInt(period.get(k));
        }

        for(int l=0;l<section.size();l++){
            sec=sec+ parseInt(section.get(l));
        }

        for(int m=0;m<batch.size();m++){
            btch=btch+ parseInt(batch.get(m));
        }

        */
        //avg=  (out / per) * 100;
        //av.setText("Average Attendance :- "+ String.valueOf(avg)+" %");

        gridView.setAdapter(new CustomAdapterLecture(this,subject,subjecttype,period,section,batch,day1,date1));



    } catch (InterruptedException e) {
        e.printStackTrace();
        e.getMessage();
    } catch (ExecutionException e) {
        e.printStackTrace();
    }

}
}

【问题讨论】:

  • size 7 表示有效索引范围为 0-6
  • 错误的哪一部分不清楚?您正试图越过边界访问。您是否调试并检查了您进入 arrayOfListsA 的内容以查看发生了什么?还是您只是从 1 而不是 0 开始索引?

标签: java android arrays indexoutofboundsexception


【解决方案1】:

索引从 0 开始而不是 1,无论如何你应该得到错误的值。 为这样的事情编写 unitTest 是个好主意,以便及早发现您的错误。

【讨论】:

    【解决方案2】:

    Java 数组索引从 0 开始到 size-1(包括)。

    您应该相应地修复您的索引:

    主题 = arrayOfListsA.get(1); 应该 主题 = arrayOfListsA.get(0); 等等。

    【讨论】:

      【解决方案3】:

      替换这个

       GridView gridView=(GridView) findViewById(R.id.gridLect1);
              subject = arrayOfListsA.get(1);
              subjecttype = arrayOfListsA.get(2);
              day1= arrayOfListsA.get(3);
              period= arrayOfListsA.get(4);
              date1= arrayOfListsA.get(5);
              section= arrayOfListsA.get(6);
              batch= arrayOfListsA.get(7);
      

       GridView gridView=(GridView) findViewById(R.id.gridLect1);
              subject = arrayOfListsA.get(0);
              subjecttype = arrayOfListsA.get(1);
              day1= arrayOfListsA.get(2);
              period= arrayOfListsA.get(3);
              date1= arrayOfListsA.get(4);
              section= arrayOfListsA.get(5);
              batch= arrayOfListsA.get(6);
      

      因为索引从 0 而不是 1 开始

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-05-21
        • 2017-04-18
        • 2018-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-13
        相关资源
        最近更新 更多