if (e.getSource() == btnIdSelect) {
    String number = txtIdSelect.getText();
    try {
     File file = new File("D:\\test.txt");
     FileInputStream fis = new FileInputStream(file);
     InputStreamReader isr = new InputStreamReader(fis);
     BufferedReader br = new BufferedReader(isr);     while (br.ready()) {
      String line = br.readLine();
      ArrayList al = new ArrayList();
      if (line.contains(number)) {
       al.add(line);
       System.out.println(al);
      }
      String s3 = al.toString();
      String[] s4 = s3.split("\\;");
      
      for(int i = 0;i<s4.length;i++){
       System.out.println(s4[i]);
       }
      }     br.close();
     isr.close();
     fis.close();    } catch (FileNotFoundException e1) {
     e1.printStackTrace();
    } catch (IOException e2) {
     e2.printStackTrace();
    }
   }
这是一个查询按钮,根据输入学号查找到那学号所在的那行字符串
现在的问题是我把arraylist转换成String 再把String根据;号分割成String[];
为什么我打印出来的结果是这样的?
[]
[]
[]
[]
[]
[]
[]
[111;888;111;11;111;111;]
[111
888
111
11
111
111

问题补充:[]一起10个 而且 String[]给返回到界面中
txtName.setText(s4[0]);
txtId.setText(s4[1]);
txtAge.setText(s4[2]);
txtSex.setText(s4[3]);
txtMobile.setText(s4[4]);
txtHomeAddress.setText(s4[5]);
为什么会出现这样的错误Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1
 at FFrame$InquestAct.actionPerformed(StudentMessage.java:634)
也就是txtId.setText(s4[1])这句话报错! 
而且界面中 txtName的显示为[]!
找个高手帮忙解决下这个问题!

解决方案 »

  1.   

    List 里面有一个方法,叫toArray();  你可以这样:
    ArrayList<String> al = new ArrayList<Stirng>(); 
    ...
    String[] strs = al.toArray();
      

  2.   

    不好意思,将 String 拼写错了
      

  3.   

    为什么要这样做 list里面存对象不就好了吗 然后要得到什么属性不都可以得到吗
      

  4.   

    list 中的对象是object类型的 我想要的是String的
    如果这样写的话
    Object o = al.get(0);
    String s4 = o.toString();
    会在Object o = al.get(0);这句话上报错!
      

  5.   

    Object o = al.get(0); 报错
    你debug 跟踪一下,看list里面到底是什么东西,看下你塞进去的到底是什么类型。
    你是怎么读文件的?