我的程序如下:
import java.util.StringTokenizer;
class StringTokenizerDemo {
public  static void main(String[] args)
   {
    String A="a,b";
String B="x,y";
String B3=null,A3=null;
StringTokenizer A1=null,B1=null;

A1 = new StringTokenizer(A, ",");
B1 = new StringTokenizer(B,",");

int A2=A1.countTokens();
int B2=B1.countTokens();

for(int i=0;i<A2;i++)
{
if(A1.hasMoreElements())
A3=A1.nextToken();
System.out.println("A:"+A3);
for(int j=0;j<B2;j++)
{
if(B1.hasMoreElements())
B3=B1.nextToken();
System.out.println("B:  "+B3);
}
}
  }
}
我希望得到这样的效果:
 A:a
 B:   x
 B:   y
 A:b
 B:   x
 B:   y
但是上面的程序始终是这样的结果: A:a
 B:   x
 B:   y
 A:b
 B:   y
 B:   y在上面的程序中循环b的时候B中的游标一直停留在最后一个上面,怎样才能每循环一次否就初始化B的游标呢》?

解决方案 »

  1.   

    import java.util.StringTokenizer;
    public class test 
    {
    public  static void main(String[] args)
       {
        String A="a,b";
    String B="x,y";
    String B3=null,A3=null;
    StringTokenizer A1=null,B1=null;

    A1 = new StringTokenizer(A, ",");

    int A2=A1.countTokens();

    for(int i=0;i<A2;i++)
    {
    if(A1.hasMoreElements())
    A3=A1.nextToken();
    System.out.println("A:"+A3);
            B1 = new StringTokenizer(B,",");
                                    int B2=B1.countTokens();
    for(int j=0;j<B2;j++)
    {
    if(B1.hasMoreElements())
    B3=B1.nextToken();
    System.out.println("B:  "+B3);
    }
    }
      }
    }
      

  2.   

    你当然必须每次在i的循环中重新生成一个StringTokenizer才行,因为它只是单向的,不可以再重新开始的
    另外,这里我认为不应该使用countTokens和for循环,这些一开始不确定长度的应该使用while
    while(A1.hasMoreTokens()) {
      System.out.println("A:" + A1.nextToken());
      StringTokenizer B1 = new StringTokenizer(B,",");
      while(B1.hasMoreTokens()) {
        System.out.println("B:  " + B1.nextToken());
      }
    }