子串不断给出StringIndexOutOfBounds异常

时间:2011-12-29 05:30:32

标签: java android string substring

所以我使用的是我输入的字符串列表,所以所有字符串都在那里,但是当我尝试在它们上使用子字符串时,它会不断给我StringIndexOutOfBounds异常。

以下是代码:

List<String> li = new ArrayList<String>();
            String entered = text.getText().toString().trim();
            String[] query = entered.split(" ");
            int temp;
            for (int i = 0; i < sizeString;i++)
            {
                temp = a[i].indexOf(" ");
                if (query[0].toLowerCase().matches(a[i].toLowerCase().substring(0,temp)))
                    li.add(a[i]);
            }

好的,现在我的arrayadapter给了我一个空指针 adb除了它的nullpointer之外不会告诉我什么 完整代码:

public void onClick (View v)
        {
            List<String> li = new ArrayList<String>();
            String entered = text.getText().toString().trim();
            String[] query = entered.split(" ");
            int temp;
            for (int i = 0; i < sizeString;i++)
            {
                if ( a[i].indexOf ( " " ) != -1 )
                    {
                        temp = a[i].indexOf(" ");
                        a[i].substring(0,temp);
                    }
                if (query[0].toLowerCase().equals(a[i].toLowerCase()))
                    li.add(a[i]);                   
            }
            setContentView(R.layout.search_results);
            final ListView list= (ListView)findViewById(R.id.search_list);
            String[] results = new String[sizeString];
            for(int i = 0; i<li.size();i++)
                results[i]=li.get(i);
            list.setAdapter(new ArrayAdapter<String>(Browse.this,android.R.layout.simple_list_item_1 ,results));
        }

3 个答案:

答案 0 :(得分:1)

如果没有空格,那么temp将为-1,你应该检查一下。

答案 1 :(得分:0)

可能会在indexOf()

中添加一个返回-1的检查

答案 2 :(得分:0)

在此行if ( a[i].indexOf ( " " ) != -1 )

之前的代码temp = a[i].indexOf(" ");中添加此条件