Java Nexttoken方法在遍历数组时跳过if语句
为海龟令牌程序构建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
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());
}
}