2014-03-28 65 views
0

构建海龟令牌程序的nexttoken方法。结束令牌的触发器之一是如果字符串在子字符串中已经有一个字母时触及另一个字母,但是从不输入if语句。如果我特别定义了我知道一个字母的数组索引,它会输入语句。Nexttoken方法在遍历数组时通过跳过语句

全局变量:

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"; 
    } 

的hasmore方法:

public boolean hasMoreTokens() { 

     if (Brackets >0) 
      return true; 
     else 
      return false; 
    } 

主要方法:

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

如果你在'if'语句之前打印出'strengarray [i]'的值,那么它是你期望的吗?我假设你实际上也在某处为'verdi'赋值。 –

+0

Verdi = st在构造函数中。 你说的没错,strengarray打印出来:041,这似乎只是数字。为什么不打印这些字母? – comodeque

+0

如果你在分割之前打印出'Verdi'的值,你会得到你所期望的吗? –

回答

0

必须有已经有incoding错误什么的,写了相同再次编码,它工作。