Java Nexttoken方法在遍历数组时跳过if语句

Java Nexttoken方法在遍历数组时跳过if语句,java,tokenize,Java,Tokenize,为海龟令牌程序构建nexttoken方法。结束标记的触发器之一是,如果字符串在子字符串中已经有一个字母时命中另一个字母,但从未输入if语句。如果我专门定义了我知道字母所在的数组索引,它就会进入语句 全局变量: int Brackets = 0; String verdi; String[] strengarray = new String [30]; TurtleTokenizer TT; int startIndex = 0; int endIndex; public

为海龟令牌程序构建nexttoken方法。结束标记的触发器之一是,如果字符串在子字符串中已经有一个字母时命中另一个字母,但从未输入if语句。如果我专门定义了我知道字母所在的数组索引,它就会进入语句

全局变量:

  int Brackets = 0;
  String verdi;
  String[] strengarray = new String [30];
  TurtleTokenizer TT;
  int startIndex = 0;
  int endIndex;

public String nextToken() {

            strengarray = verdi.split("");
            boolean ok = true;
            boolean Letter = false;
            int  endtemp = endIndex;

              for(int i = startIndex; i<strengarray.length; i++)
               { 

                  if (strengarray[i].equals("F") || strengarray[i].equals("R") || strengarray[i].equals("L") ) // This if statement is never entered!
                   {
                      if( Letter == true)
                          break;
                      else
                       Letter = true;
                   }

                    if(strengarray[i].equals( "{"))
                    {
                        Brackets++;
                    }
                    if(strengarray[i].equals( "}"))
                    {
                        Brackets--;

                    }

                  endtemp = i;
                }
                            endIndex = endtemp;

              String sub = verdi.substring( startIndex,  endIndex);
             startIndex = endIndex;

                return sub + "\n"; 
    }
主要方法是:

public class TestTurtle {
    public static void main(String [ ] args)
    {   

        String st = "F0R4L10";

    TurtleTokenizer Leonardo = new TurtleTokenizer(st);



  do 
    {
         System.out.println(Leonardo.nextToken() + "\n");
}
     while(Leonardo.hasMoreTokens());
    }
}

一定是有输入错误或什么的,另一次写了相同的代码,结果成功了。

如果你在那条
If
语句之前打印出
strengaray[i]
的值,这是你期望的吗?我假设你实际上也在某个地方给verdi赋值。verdi=st在构造函数中。你是对的,有点不对劲,Strengaray打印出来:041,这似乎只是数字。为什么它不打印字母?如果你在拆分之前打印出
Verdi
的值,你会得到你想要的吗?是的,它包含字母的完整字符串,我在另一次以同样的方式写的,它工作了。。。谢谢你的帮助,迈克!
public class TestTurtle {
    public static void main(String [ ] args)
    {   

        String st = "F0R4L10";

    TurtleTokenizer Leonardo = new TurtleTokenizer(st);



  do 
    {
         System.out.println(Leonardo.nextToken() + "\n");
}
     while(Leonardo.hasMoreTokens());
    }
}