【问题标题】:java.lang.IndexOutOfBoundsException: Invalid index 5, size is 1java.lang.IndexOutOfBoundsException:索引 5 无效,大小为 1
【发布时间】:2017-04-20 10:13:44
【问题描述】:

我正在开发 android 应用程序。我想获取 id 的特定索引,但它总是返回第一个索引 id 或应用程序崩溃。请帮助我如何解决错误。谢谢

这是我的代码:

 protected Void doInBackground(Void... arg0)
    {
        HttpService httpService = new HttpService("http://192.168.0.103/GetActiveGroupMember.php");
        try
        {
            httpService.ExecutePostRequest();

            if(httpService.getResponseCode() == 200)
            {
                result = httpService.getResponse();
                ArrayList<Integer> m_idlist = null;

                listid = new ArrayList<>();
                listid.add(result);
               // System.out.println("ListID...  "+listid+" ListId Size "+listid.size());
                System.out.println("ListID...  "+listid+" ListId Size "+listid.size());
             //   Log.d("Result", result);
                System.out.println("Result "+result);
                if(result != null)
                {
                    JSONArray jsonArray = null;
                    try {
                        jsonArray = new JSONArray(result);

                        JSONObject object;
                        JSONArray array;

                        member m;
                        members = new ArrayList<member>();

                        for(int i=0; i<jsonArray.length(); i++)
                        {
                            m= new member();
                            object = jsonArray.getJSONObject(i);

                          //  m.username = object.getString("username");
                            m.id = object.getInt("id");

                            members.add(m);

                            int m_id  = m.id;
                            System.out.println("mem_id  = "+m_id);

                            m_idlist = new ArrayList<Integer>();
                            m_idlist.add(i);

                          System.out.println("five no id = "+m_idlist.get(i)); // TO print all Id

                        }
                         if(m_idlist.size()>5){
                            System.out.println("five no id = "+m_idlist.get(5));
                           }
                     //   System.out.println("Total member  = "+members.size());

                    }

错误:

W/System.err: java.lang.IndexOutOfBoundsException: Invalid index 5, size is 1
W/System.err:     at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
W/System.err:     at java.util.ArrayList.get(ArrayList.java:308)
W/System.err:     at com.example.moraya.adminmodule.GetActiveGroupMemberACtivity$GetHttpResponse.doInBackground(GetActiveGroupMemberACtivity.java:121)
W/System.err:     at com.example.moraya.adminmodule.GetActiveGroupMemberACtivity$GetHttpResponse.doInBackground(GetActiveGroupMemberACtivity.java:56)
W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:288)
W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
W/System.err:     at java.lang.Thread.run(Thread.java:841)
W/EGL_genymotion: eglSurfaceAttrib not implemented

非常感谢。

【问题讨论】:

  • 您的列表仅包含 一个 项,因此没有索引为 5 的项。
  • System.out.println("五无id = "+m_idlist.get(5));当列表中只有 1 项时,您将系统推到索引 5 处
  • m_idlist.get(5) 如果您的列表总共没有 6 个元素,那么它将始终抛出此错误。添加检查列表大小并将此代码置于该条件下。
  • listid.size() & m_idlist.size()的值是多少?
  • 同意大家的观点,需要有一个check语句(一个简单的if语句)来检查元素是否存在

标签: java android arraylist android-asynctask indexoutofboundsexception


【解决方案1】:
System.out.println("five no id = "+m_idlist.get(5));

您可能在列表中没有索引为 5 的元素,添加一个 if 语句来检查您的索引与列表的大小。

在你的情况下:

if (5 < m_idlist.size()) { ... }

【讨论】:

  • k.sir,实际上我在 int m_id = m.id 中有 10 个 id;我将 m_id 添加到 Arraylistlist 作为 m_idlist.add(m_id);之后,我通过使用 System.out.println("five no id = "+m_idlist.get(5));然后它返回第一个位置 id ..请帮助我。
  • 没有,据说只有1个元素Invalid index 5, size is 1
  • 那么正如@bhaumiksoni 所问,println 的打印是什么?
【解决方案2】:

你必须在for循环上面声​​明这一行m_idlist = new ArrayList&lt;Integer&gt;();

【讨论】:

  • 非常感谢先生。很好的答案...您节省了我的时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 2017-11-03
  • 2013-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多