2015-07-17 5 views
0

Когда я положил «я» в str, «Это я» не печатается, Но я положил «я» в str, «Это я» печатается.Проблемы с использованием StringTokenizer в Java?

Может кто-нибудь объяснить это поведение. Ниже мой код.

Код:

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

Я не думаю, что это дубликат, на самом деле сравнение не работает. – SomeStudent

+0

Используйте compareTo() вместо == –

+0

Измените "} else if (typeCharacter ==" I ") {" to "if (typeCharacter.equals (" I ") {" – Shar1er80

ответ

0

Я не использовал StringTokenizer, но, глядя на Java Doc (http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html) и примерах они есть, я думаю, что проблема в том, что ваш строковый параметр вы пытаетесь tokenken имеет только одну букву в нем, и поэтому всегда будет «I»

Редактирование: Кроме того, если память служит мне правильной, при сравнении строк, которые вы хотите использовать .equalsIgnoreCase или любой другой метод .equal как == не может возвращать равенство, даже если они равны, из-за отдельного указателя памяти s.

Редактирование 2: Кроме того, что касается «я» и «я», я думаю, причина в том, что первый вариант уже имеет пробел, поэтому код пропустил его из-за этого факта, так как ваш разделитель «" ».

+0

Спасибо, я решу проблему. :) – arubirate