感谢各位
意思是,我想读取一段字符串,但该字符串a是使用tab也就是(char)0x09作为字段分隔符,(char)0x1a作为结束符。
该字符串比如是 String a="123"+(char)0x09+"4567"+(char)0x1a; 这样。
我想将里面数据使用while循环来读取(while的条件是读到(char)0x1a 结束符便终止读取)读出来分别存入b,c里面,成为String b="123" 和String c="4567"
因为a里面不确定有多少数据需要读出来的数据,也就是说可能不单单有b,c还有d,e,f,....这些来存数据。
请问应该怎样做啊

解决方案 »

  1.   

    我想是需要Arraylist数组,这样就可以不使用b,c,d,f......这样的变量了,但不知道具体应该怎么办,恳求各位大哥帮忙
      

  2.   

    String a = "123" + (char) 0x09 + "4567" + (char) (0x1a);int stop = a.indexOf(0x1a);String[] data = a.substring(0, stop).split(String.valueOf((char) 0x09));
    for (int i = 0; i < data.length; i++) {
    System.out.println(data[i]);
    }
      

  3.   

    谢谢 humanity(总是偷窥 Java & XML) 
    但,程序提示java.lang.NoSuchMethodError错误
    是怎么回事啊
      

  4.   

    humanity(总是偷窥 Java & XML) 的答案是正解
      

  5.   

    可能是你的JDK配置的问题吧!!!~~
      

  6.   

    同意humanity(总是偷窥 Java & XML)
      

  7.   

    String a = "123" + (char) 0x09 + "4567" + (char) (0x1a);
    数据很多呢?比如,String a = "123" + (char) 0x09 + "4567" )+"123" + (char) 0x09 )+"123" + (char) 0x09 )+"123" + (char) 0x09 + (char) (0x1a
    这样会出错吗?
      

  8.   

    那如果想使用while循环和Arraylist数组,还有 StringTokenizer st = new StringTokenizer(a, (char)0x09);来实现,应该怎样使得0x1a为终止循环的条件
      

  9.   


    String a = "123" + (char) 0x09 + "4567" + (char) (0x1a);int i = 0;     
    while((char)0x1a != a.charAt(i)){
                
    //这部分你可以写你的程序!!不过比较多!
    .....
    i++;
    }
      

  10.   

    要求 JDK 1.4 ,
    1.4 才有 String.split 因为 1.4 引入了 RE 正则表达式 , 并在 String 提供支持.
      

  11.   

    谢谢wangw1319(于风) 那部分代码应该怎样写啊
      

  12.   

    String a = "123" + (char) 0x09 + "4567" + (char) (0x1a);        int i = 0;
            while((char)0x1a != a.charAt(i)){
                i++;
            }
            a = a.substring(0,i);
            StringTokenizer st = new StringTokenizer(a, String.valueOf((char)0x09));
            List lst = new ArrayList();
            for (i = 0; i < st.countTokens() ; i++) {
                lst.add(String.valueOf(st.nextElement()));
            }
      

  13.   

    那怎么循环输出这些lst值啊,需要转换吗?System.out.println(lst[i]);
    好像输不出来,各位大哥帮帮小弟
      

  14.   

    更正一下:String a = "123" + (char) 0x09 + "4567" + (char) (0x1a);            int i = 0;
                while ((char) 0x1a != a.charAt(i)) {
                    i++;
                }
                a = a.substring(0, i);            StringTokenizer st = new StringTokenizer(a,
                        String.valueOf((char) 0x09));
                List lst = new ArrayList();
                while (st.hasMoreElements()) {
                    lst.add(String.valueOf(st.nextElement()));
                }
    用            for (i = 0; i < lst.size(); i++) {
                    System.out.println(lst.get(i));
                }
    可以打出来
      

  15.   

    感谢wangw1319(于风)  和humanity(总是偷窥 Java & XML) 
    问题解决
      

  16.   

    还有问题:( 就是在控制台里输出的值都正确,但是在最后会多输出一个多余的值,这个值在控制台里显示是为空值?这是为什么呢?
    比如应该输出5个就可以了,但输出了6个,第六个是多余的,这是怎么回事呢?(使用的是wangw1319(于风) 写的那个最终方法)
      

  17.   

    值没有多输出
    只是System.out.println()语句默认输出完后回车
    不信你可以打出lst的大小
    即System.out.println(lst.size());
      

  18.   


    public class Datas {
         public static void main(String args[]){
          String a = "123"+ (char)0x09+"456"+(char)0x09+"789";
          String [] data = a.split(String.valueOf((char)0x09));
          for(int i=0;i<data.length ;i++){
          System.out.println(data[i]);
          }
         }
    }