2013-06-28 2 views
0

Я просто нашел кусок кода Java внутри метода:Может ли StringTokenizer countTokens когда-либо быть нулевым?

if (param.contains("|")) { 
    StringTokenizer st = new StringTokenizer(param.toLowerCase().replace(" ", ""), "|"); 
    if (st.countTokens() > 0) { 
    ... 
    } 
} else { 
    return myString.contains(param); 
} 

Может countTokens в вышеописанном случае когда-либо быть меньше, чем 1?

+3

Почему бы вам не попробовать это? Вы можете легко построить пример. – Maroun

ответ

5

Он может, если строка, которую вы пытаетесь разметить пуст, в противном случае она будет всегда по крайней мере 1

Пример 1:

String myStr = "abcdefg"; 
StringTokenizer st = new StringTokenizer(myStr, ";"); 
int tokens = st.countTokens(); 
System.out.println("Number of tokens: " + tokens); 

> "Number of tokens: 1" 

Пример 2:

String myStr = ""; 
StringTokenizer st = new StringTokenizer(myStr, ";"); 
int tokens = st.countTokens(); 
System.out.println("Number of tokens: " + tokens); 

> "Number of tokens: 0" 

Пример 3:

String myStr = "abc;defg"; 
StringTokenizer st = new StringTokenizer(myStr, ";"); 
int tokens = st.countTokens(); 
System.out.println("Number of tokens: " + tokens); 

> "Number of tokens: 2" 
+0

Теперь, когда вы упомянули ... позвольте мне обновить код. –

3

Ниже возвращения 0:

  • new StringTokenizer("", "|").countTokens()
  • new StringTokenizer("|", "|").countTokens()
  • new StringTokenizer("||||", "|").countTokens()

так countTokens() возвращает 0 когда:

  • String пуст
  • String содержит только разделители
1

Посмотрите на эту

String param=""; 
    StringTokenizer st = new StringTokenizer(param.toLowerCase().replace(" ", ""), "|"); 
    System.out.println(st.countTokens()); 

ответ будет 0 (ноль)

+0

Итак, если параметр никогда не пуст И myString содержит разделитель, то он никогда не будет ниже 1, это правильно? –

+0

Ответ 0 (ноль) не o;) – Burkhard

+1

@DrH: если параметр никогда не пуст, он никогда не будет ниже 1. – Burkhard

Смежные вопросы