0

ループでは、「m」は 0 から 4 まで機能しますが、0 から 6 までではなくクラッシュします。

ArrayList<ItemTeacher> results = new ArrayList<ItemTeacher>();
String resultteacher="";
String[] binku2=null;

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
try {
    HttpClient httpclient = new DefaultHttpClient();

    HttpPost httppost = new HttpPost("http://"+localip+":8080/Apj/Teacher_Servlet");

    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    HttpResponse response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();
    InputStream is = entity.getContent();

    BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
    StringBuilder sb = new StringBuilder();
    String line = null;
    while ((line = reader.readLine()) != null) {
         sb.append(line);
    }
    is.close();
    resultteacher = sb.toString();
    System.out.println("RESULT is : -**********"+resultteacher+"********-");


    String[] binku = resultteacher.split("@");

    System.out.println("LENGTH OF BINKU = "+binku.length);

    for(int m=0;m<=binku.length-1;m++)
    {

        binku2 = binku[m].split("#");
        System.out.println("Record number"+binku2[m]);
        drawable = LoadImageFromWebOperations("http://"+localip+":8080/Apj/TeacherImage/"+binku2[4]+".png");
        System.out.println("IMAGE DATA DISPLAY ="+drawable);

        ItemTeacher item_teacher = new ItemTeacher();

        item_teacher.setname(binku2[0]);
            item_teacher.setinfo(binku2[1]);
            item_teacher.setimage(drawable);
            String binku3[] = binku2[2].split("~");
            String binku4[] = binku2[3].split("~");

            String time="";
            String timeroom="";
            time =("Lecture Timings - Classroom");
            for(int i=0;i<=8;i++)
            {
            //  time +=("[Timings and Room]");
                timeroom +=("["+binku3[i]+" - "+binku4[i]+"]"+"      ");
                //System.out.println("Record number"+binku3[i]);
            }
            item_teacher.settime(time);
            item_teacher.setroom(timeroom);
            System.out.println("m value is ="+m);

            results.add(item_teacher);

    }
}


catch (Exception e) {
     System.out.println("Error parsing data " + e.toString());
}

return results;
}

Logcat の詳細:

02-12 21:33:36.772: I/System.out(358): RESULT is : -**********Mrs Roopali Sood#M.C.M (Head IT Dept)#9:00~9:45~10:30~10:45~11:30~12:15~1:00~1:45~3:30~#F8~Lab 1~Lab 3~F7~F8~S9~Free~S8~F8~#1@Mr Jagmohan Mago#M.C.A (IT Dept).#9:00~9:45~10:30~10:45~11:30~12:15~1:00~1:45~3:30~#Free~S2~F8~S1~F9~Free~Lab 2~S9~Lab1~#2@Mr Munish Gupta#M.C.A (IT Dept).#9:00~9:45~10:30~10:45~11:30~12:15~1:00~1:45~3:30~#S9~F8~S1~Lab 1~F1~Free~F8~Lab 3~S5~#3@Mrs Pallavi Chopra#M.C.A., M.Phil. (IT Dept).#9:00~9:45~10:30~10:45~11:30~12:15~1:00~1:45~3:30~#Lab 2~Free~S2~F8~Free~Free~Lab 2~Free~Lab1~#4@Mr Abhejeet Singh#M.C.A (IT Dept).#9:00~9:45~10:30~10:45~11:30~12:15~1:00~1:45~3:30~#Lab 3~Lab 1~Lab 3~S7~F8~Lab 2~Free~S8~S9~#5@Vinay#M.C.A (IT Dept).#9:00~9:45~10:30~10:45~11:30~12:15~1:00~1:45~3:30~#Free~S2~F8~S1~F9~Free~Lab 2~S9~Lab1~#6@Bharti#Pata nai#9:00~9:45~10:30~10:45~11:30~12:15~1:00~1:45~3:30~#S9~F8~S1~Lab 1~F1~Free~F8~Lab 3~S5~#7@********-
02-12 21:33:36.784: I/System.out(358): LENGTH OF BINKU = 7
02-12 21:33:36.784: I/System.out(358): Record numberMrs Roopali Sood
02-12 21:33:37.082: I/System.out(358): IMAGE DATA DISPLAY =android.graphics.drawable.BitmapDrawable@4618b990
02-12 21:33:37.102: I/System.out(358): m value is =0
02-12 21:33:37.102: I/System.out(358): Record numberM.C.A (IT Dept).
02-12 21:33:37.512: I/System.out(358): IMAGE DATA DISPLAY =android.graphics.drawable.BitmapDrawable@4619c2a8
02-12 21:33:37.522: I/System.out(358): m value is =1
02-12 21:33:37.522: I/System.out(358): Record number9:00~9:45~10:30~10:45~11:30~12:15~1:00~1:45~3:30~
02-12 21:33:37.772: I/System.out(358): IMAGE DATA DISPLAY =android.graphics.drawable.BitmapDrawable@461ac610
02-12 21:33:37.782: I/System.out(358): m value is =2
02-12 21:33:37.792: I/System.out(358): Record numberLab 2~Free~S2~F8~Free~Free~Lab 2~Free~Lab1~
02-12 21:33:38.102: I/System.out(358): IMAGE DATA DISPLAY =android.graphics.drawable.BitmapDrawable@461bca98
02-12 21:33:38.112: I/System.out(358): m value is =3
02-12 21:33:38.112: I/System.out(358): Record number5
02-12 21:33:38.492: I/System.out(358): IMAGE DATA DISPLAY =android.graphics.drawable.BitmapDrawable@461ccc80
02-12 21:33:38.492: I/System.out(358): m value is =4
02-12 21:33:38.505: I/System.out(358): Error parsing data java.lang.ArrayIndexOutOfBoundsException
4

2 に答える 2

2

これは、ほぼ確実に意図したものではありません。

binku2 = binku[m].split("#");
System.out.println("Record number"+binku2[m]);

配列の長さが 4 であるかのようにどこでも操作しているように見えますbinku2が、値が のインデックスにアクセスしようとしていますm。したがって、ループの 5 回目の繰り返しに到達すると、m4 になり、例外がスローされます。おそらくbinkuここにアクセスするつもりでした:

binku2 = binku[m].split("#");
System.out.println("Record number"+binku[m]);
于 2013-02-12T16:28:41.947 に答える
1

次のようにループをハードコーディングすることで、エラーに備えることができます。

for(int i=0;i<=8;i++)

m<=binku.length-1またはより単純なバージョンのような動的な値を常に使用する必要がありますm < binku.length。また、複数の配列で作業している場合は、各配列の長さを確認するのが最も安全です。

for(int i = 0; i < binku3.length && i < binku4.length; i++)
于 2013-02-12T16:28:19.357 に答える