从服务器的值数组中检索值

时间:2013-12-16 07:57:41

标签: android exception arrays

我有一段代码,我正试图追踪它。代码是:

if(response != null) 
        { 

            String line="";

            String strLine[]=new String[7];

            docids.clear();
            names.clear();
            specl.clear();
            qual.clear();
            exp.clear();
            loc.clear();
            cid.clear();


            passmsg="";

            //ArrayList<String> arrloc = new ArrayList<String>();

            InputStream inputstream = response.getEntity().getContent(); 

            //line[] = convertStreamToString(inputstream); 

            BufferedReader rd = new BufferedReader(new InputStreamReader(inputstream));
            try 
                {

                while ((line = rd.readLine()) != null) 

                    {

                    Toast.makeText(this,"Line:"+line , Toast.LENGTH_LONG).show();
                    strLine= line.split(",");
                    String errmsg,errno;


                    Integer a=Integer.parseInt(strLine[0]);


                    if(a==0)
                    {


                     Toast.makeText(this,"NO SESSION!!!" , Toast.LENGTH_LONG).show();
                     Intent myIntent = new Intent(getApplicationContext(),LoginActivity.class);
                     startActivityForResult(myIntent, 0);

                    }

                    else if(a==1)
                    {

                        errno=strLine[1];
                        if(errno.equals("61")||errno.equals("49"))
                            {
                            errmsg=strLine[2];
                             Toast.makeText(this,errmsg , Toast.LENGTH_LONG).show();
                            }
                        else if(errno.equals("194"))
                        {
                        errmsg=strLine[2];
                         Toast.makeText(this,errmsg , Toast.LENGTH_LONG).show();
                         e1.setText("");
                         e1.requestFocus();
                        }

                        else if(errno.equals("195"))
                        {
                        errmsg=strLine[2];
                         Toast.makeText(this,errmsg , Toast.LENGTH_LONG).show();
                         e2.setText("");
                         e2.requestFocus();
                        }

                        else if(errno.equals("62")) 
                            {
                            //whc=strLine[3];

                                whc=which.toString();

                            if(whc.equals("1"))
                            {
                                passmsg="Doctor List,Specialties";
                            }

                            else if(whc.equals("2"))
                            {
                                passmsg="Doctor List,City Locations";
                            }
                            docids.add(strLine[3]);



                            names.add("Dr."+strLine[4]);

                            String sp=replace(strLine[5]);
                            specl.add("Specialities:"+sp);

                            String q=replace(strLine[6]);
                            qual.add("Qual:"+q);

                            exp.add("Exp:"+strLine[7]+"yrs");

                            if(whc.equals("1"))
                            {
                                loc.add(replace(strLine[8]));
                            }

                            else if(whc.equals("2"))
                            {

                                cid.add(strLine[9]);
                                loc.add(strLine[8]+","+strLine[10]);
                            }

代码执行完美但我怀疑的是当数组声明为7个值时 String strLine [] = new String [7]; 我们只能存储0到6位的值。如何存储和检索第7个位置的值?

cid.add(strLine[9]);
loc.add(strLine[8]+","+strLine[10]);

为什么我没有得到ArrayOutOfBoundException?

2 个答案:

答案 0 :(得分:0)

字符串数组只能初始化一次,只能初始化一次。

你的解决方案是:

String a[]; 
a = new String[no_of_strings_received];

根据动态接收的响应数量实例化数组!

答案 1 :(得分:0)

strLine= line.split(",");

由于上面的行,创建了一个新的字符串数组。 因此,此数组的大小与split函数返回的元素相同。

strLine= new String[7];

上面的行是没有意义的,因为当你为strLine分配一个新数组时参考被破坏了。

你可以写     strLine中= NULL;

并致信:

strLine= line.split(",");

将初始化你的字符串数组。