请问各位大哥,怎样使用while循环语句读到结束符char(0x1a)停止(急)

时间:2022-12-13 14:26:43
一个程序是
String a="123"+char(0x09)+"4567"+char(0x1a);
我想读取使用while循环读取到char(0x1a)后就自动停止,因为a里面用char(0x09)分割了N条数据,
读后存入变成
b=123
c=4567

请问大哥应该怎样做啊
     

25 个解决方案

#1


不太明白你的意思

#2


我也不是很明白
把整个代码发了看看!

#3


感谢各位
意思是,我想读取一段字符串,但该字符串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,....这些来存数据。
请问应该怎样做啊

#4


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

#5


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]);
}

#6


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

#7


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

#8


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

#9


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

#10


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
这样会出错吗?

#11


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

#12


我想你用的是JDK1.3

#13



String a = "123" + (char) 0x09 + "4567" + (char) (0x1a);

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

#14


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

#15


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

#16


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()));
        }

#17


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

#18


更正一下:

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));
            }
可以打出来

#19


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

#20


up

#21


为什么结束不了帖子,给分的时候说,分数大于帖子数??

#22


为什么结束不了帖子,给分的时候说,分数大于帖子数??

#23


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

#24


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

#25



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]);
      }
     }
}

#1


不太明白你的意思

#2


我也不是很明白
把整个代码发了看看!

#3


感谢各位
意思是,我想读取一段字符串,但该字符串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,....这些来存数据。
请问应该怎样做啊

#4


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

#5


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]);
}

#6


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

#7


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

#8


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

#9


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

#10


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
这样会出错吗?

#11


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

#12


我想你用的是JDK1.3

#13



String a = "123" + (char) 0x09 + "4567" + (char) (0x1a);

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

#14


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

#15


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

#16


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()));
        }

#17


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

#18


更正一下:

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));
            }
可以打出来

#19


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

#20


up

#21


为什么结束不了帖子,给分的时候说,分数大于帖子数??

#22


为什么结束不了帖子,给分的时候说,分数大于帖子数??

#23


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

#24


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

#25



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]);
      }
     }
}