在 Java 中使用 StringTokenizer 时出现问题?
Issues using StringTokenizer in Java?
当我把"I "放入str
时,"It is I"没有打印出来,
但是我把"I"写成str
,打印的是"It is I"
谁能解释一下这种行为。下面是我的代码。
代码:
String str = "I "; // in = "I"
StringTokenizer st = new StringTokenizer(str, " ", false);
String typeCharater="";
if( st.hasMoreTokens() ) {
typeCharater = st.nextToken();
}
} else if( typeCharater == "I" ) {
System.out.println("It is I");
}
我还没有真正使用过 stringtokenizer,但是查看 Java 文档 (http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html) 和他们提供的示例,我认为问题在于您尝试标记化的字符串参数它只有一个字母,因此它总是 "I"
编辑:此外,如果我没记错的话,在比较字符串时,您想要使用 .equalsIgnoreCase 或任何其他 .equal 方法,因为 == 可能 return 不相等,即使它们相等,由于单独的内存指针。
编辑 2:此外,至于 "I " 与 "I" 我认为原因可能是第一个选项已经有一个 space,所以代码跳过了它,因为作为分隔符的事实是“”。
当我把"I "放入str
时,"It is I"没有打印出来,
但是我把"I"写成str
,打印的是"It is I"
谁能解释一下这种行为。下面是我的代码。
代码:
String str = "I "; // in = "I"
StringTokenizer st = new StringTokenizer(str, " ", false);
String typeCharater="";
if( st.hasMoreTokens() ) {
typeCharater = st.nextToken();
}
} else if( typeCharater == "I" ) {
System.out.println("It is I");
}
我还没有真正使用过 stringtokenizer,但是查看 Java 文档 (http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html) 和他们提供的示例,我认为问题在于您尝试标记化的字符串参数它只有一个字母,因此它总是 "I"
编辑:此外,如果我没记错的话,在比较字符串时,您想要使用 .equalsIgnoreCase 或任何其他 .equal 方法,因为 == 可能 return 不相等,即使它们相等,由于单独的内存指针。
编辑 2:此外,至于 "I " 与 "I" 我认为原因可能是第一个选项已经有一个 space,所以代码跳过了它,因为作为分隔符的事实是“”。