2013-10-17 33 views
0

我在字符串標記器中遇到了一些問題,就像我的代碼如下,然後有一些問題我想知道。StringTokenizer問題

代碼

public class Str_Tokenizer { 
    public static void main(String args[]){ 
     StringTokenizer st=new StringTokenizer("this is him"); 
     while(st.hasMoreTokens()) { 
      System.out.println(st.nextToken()); 
     } 
    } 
} 

問題:

  1. 如果我不使用while(st.hasMoreTokens())那麼我該如何使用StringTokenizer
  2. 如果我不使用st.nextToken,我應該使用什麼?
+2

爲什麼「不要用」呢? –

+0

你可以切換到蟒蛇:) – Maroun

+0

你可以使用hasMoreElements()來代替?或者把它放在一個for循環? – pimpf0r

回答

0

StringTokenizer是保留兼容性原因

首先,你不能使用這個類沒有這些hasMoreTokens()next()方法遺留類。

由於hasMoreElements()返回與hasMoreTokens方法相同的值,因此無法在其上循環。 nextElement()返回與nextToken方法相同的值,但不想使用它們。

其他明智hasMoreElementsnextElement是替代品。

雖然它的使用是在新代碼氣餒。建議任何尋求此功能的人使用String或java.util.regex包的拆分方法。

即使docs of StringTokenizer給出的例子,你如何避免使用它

下面的例子說明如何String.split方法可用於將一個字符串分解爲基本標記:

String[] result = "this is a test".split("\\s"); 
for (int x=0; x<result.length; x++) 
    System.out.println(result[x]); 
+0

*首先,如果沒有那些hasMoreTokens()和next()方法,就不能使用該類。 - 我完全不同意這一點。你可以使用'hasMoreElements()'和'nextElement()'。或者你可以使用'countTokens()'獲得令牌計數,將其放在'for'中並使用'nextElement()'。 – SudoRahul

+0

@ R.J \t'hasMoreElements()' 返回與'hasMoreTokens'方法相同的值。 'nextElement()' 返回與'nextToken'方法相同的值。 OP不想使用這些方法。感謝您指點。 –

+0

我想,他只是想知道替代方案。當然,他會希望以某種方式訪問​​下一個值。無論如何,在編輯後撤消我的'-1'。 – SudoRahul

0

如果您不想使用whilenextToken,請進行字符串拆分。 這樣:

String s ="this is him"; 
     String[] s2 = s.split(" "); 
     for (String str : s2) { 
      System.out.println(str); 
     }