[Language Specifics - Homework] 11. Phonebook - Java: проблем с край на програмата
Здравейте,
Написах задачата на Java, но не мога да изляза от while цикъла, като въведа END. Някой може ли да помогне и да ми обясни как трябва да стане? Благодаря!
Здравейте,
Написах задачата на Java, но не мога да изляза от while цикъла, като въведа END. Някой може ли да помогне и да ми обясни как трябва да стане? Благодаря!
В Java стринговете не се срявняват с == а с метода .equals("");
смени кода да ти е
while (!input.equals("END"))
също така не е нуждо да правиш проверка първо дали нещо е равно на друго нещо а после да взимаш отрицанието.
Този израз ( ! ( x == y )) е еквивалентен на ( x != y )
В Java сравнението на String-ове става с equals() а не с == . Оператора == сравнява дали обектите са равни и в повечето случаи това failва защото дори да сравняваш abc == abc ако те сочат към различно парче памет те са различни .
примерно ако имаш :
String pesho = "Pesho";
String pesho1 = "Pesho";
System.out.println(pesho==pesho1) => //това ще ти изкара true;
Ако създаваш String JVM-a търси в String pool-a и ако намери match дава същия адрес и на 2рия string.
String pesho = "Pesho";
String pesho1 = new String("Pesho");
System.out.println(pesho==pesho1) => // ще ти изкара false
String-а е обект и трябва да се сравнява с equals както и когато си правиш собствени обекти трябва да overridваш hashCode и equals.
Благодаря ви, така стана. Аз знаех тези неща за equals() за C# и там винаги така ги сравнявам. За override-ването на equals и hashCode-a още ми е рано, само съм го виждала веднъж.
Аз първо го бях направила с equals, но IntelliJ-а сам ми предложи да го сменя на "==" ;)) Няма а го слушам толкова друг път.
Да ти кажа .. това InteliJ не ми допада много предпочитам Eclipse понеже работя с него от повече от 6 години, a InteliJ (AndroidStudio) го ползвам само заради андроидски проекти.
//PS: Но това е мое мнение, някой хора пък не харесват еклипс..