A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public static ArrayList ReadSqlConfing(String str) throws FileNotFoundException, IOException{
        FileReader myFileReader=new FileReader(str);
        BufferedReader myBufferedReader=new BufferedReader(myFileReader);

        String myString=null;
        ArrayList<String []> myal=new ArrayList<String []>();
        
        String mysql="";
        String filename="";
       //tempal[0]="";
       //tempal[1]="";
        //String tmpstr[]=new String[2];
        /*while((myString=myBufferedReader.readLine())!=null)
        { System.out.println(myString);
        }*/
         
        int i=0;
       while((myString=myBufferedReader.readLine())!=null)
        { //System.out.println(myString.indexOf("//-->"));
           if(myString.indexOf("//-->")>=0){
                filename=myString.replace("//-->","");//取得要保存的文件名
                //System.out.println(filename);
               String tempal[]=new String[2];
                tempal[0]=mysql;
                tempal[1]=filename;
                //myal.add(i,new String[2]);
                myal.add(i,tempal);
                i++;
                System.out.println("i="+i+"  filename="+filename+" ");
                mysql="";
                filename="";
                tempal[0]="";
                tempal[1]="";
           }
           else{
              mysql=mysql+myString;
           }
        }
       myFileReader.close();
      
       for(int m=0;m<myal.size();m++){
           String tempal[]=new String[2];
           tempal= (String[])myal.get(m);
           System.out.println(tempal[0]);
           System.out.println(tempal[1]);
       }
        return myal;
    }


这段代码为什么在最后打出来的tempal[0]和tempal[1]都是空呢?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

2 个回复

倒序浏览
因为你这里 :
  tempal[0]="";
  tempal[1]="";
第次都赋值为空呀,结果当然为空。
                                 |------>(3)String
(1)myal -----> (2)多个String[]------->|------->(3)String
                                                     |-------->(3)String
每次运行
tempal[0]="";
  tempal[1]="";
这个后,就相当在上面的第二步那个地方给那个String[]的两个引用赋值。
那个filename开始是赋值成功了的,但你后面又把它替换成空了。
所以结果就是空了。

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
强子 黑马帝 2011-11-17 09:43:11
藤椅
楼上正解 可以试试我这个
                String[] str = new String[3];
                List<String[]> list = new ArrayList<String[]>();
                str[0] = "1";
                str[1] = "2";
                str[2] = "3";
                list.add(str);
                System.out.println(list.get(0)[0]+"||||"+list.get(0)[1]+"|||"+list.get(0)[2]);
                str[0] = "";
                str[1] = "";
                System.out.println(list.get(0)[0]+"||||"+list.get(0)[1]+"|||"+list.get(0)[2]);
而且你这句
tempal[0]="";
tempal[1]="";
的意义是什么呢?
你在循环中String tempal[]=new String[2];就不必手动的去清空它了吧

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马