有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓 studio中的java IndexOutOfBoundsException错误

我已经建立了一个应用程序的代码是正确的。但我还是犯了一个错误

java.lang.IndexOutOfBoundsException: Invalid index 7, size is 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();
    }

}
}

共 (3) 个答案

  1. # 1 楼答案

    换掉这个

     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);
    

    As索引以0而不是1开头

  2. # 2 楼答案

    Java数组索引以0开头,大小不超过1(包括1)

    您应该相应地修复索引:

    主题=arrayOfListsA。得到(1); 应该是 主题=arrayOfListsA。得到(0); 等等

  3. # 3 楼答案

    索引从0开始,而不是从1开始,无论如何都应该得到错误的值。 为了尽早发现错误,我最好为类似的事情编写unitTest