2013-04-02 2 views
-6

решаемые в комментариях, «(tempuser.equals (actualuser)» был правильный путь== Не работает с отсканированной строки для проверки пользователя/пароль

Это фрагмент моего кода;.

if (tempuser != "a"){ 
    System.out.println("FAIL"); 
    logincount=logincount+1; 
    } 
else { 
    System.out.println("Success"); 
    } 

программа распечатывания FAIL, даже когда я распечатать отсканированные переменные и все «а».

Любые идеи?

Можно отправить больше кода по запросу

+1

Не сравнивайте строки с '=='. Он работает именно так, как это должно быть. –

+0

Попробуйте найти «Сравнение строк Java» здесь или в Google. – Keppil

+2

http://stackoverflow.com/questions/767372/java-string-equals-versus – TerenceJackson

ответ

1

Сравнение строк с использованием == не рекомендуется. Правильный способ сравнения строк являются с equals()

if(!tempuser.equals("a")) { 
    // rest of code 
} 
else { 
    // rest of code 
} 
+3

Не только не рекомендуется; просто не работает – Petesh

+0

Он будет работать в конкретных случаях, но да, я согласен, что лучше подумать об этом, так как это не сработает. – NilsH

+0

Спасибо за помощь! – Kieronboz

0

Для сравнения строк, нужно использовать String.equals

if (tempuser.equals("a"){ 
+0

Спасибо за помощь! – Kieronboz

0

Allways использовать String.equals(otherString) для сравнения содержимого строки. с == вы сравниваете идентификаторы объектов.

+0

Спасибо за помощь! – Kieronboz

0

Чтобы сравнить строки для равенства, не используйте ==. Оператор == проверяет , чтобы увидеть, являются ли два объекта точно одним и тем же объектом. Две строки могут быть разных объектов, но имеют одинаковое значение (в них одинаковые символов). Используйте метод .equals() для сравнения строк для равенства . Аналогичным образом используйте метод .compareTo() для проверки неравных сравнений . Например:

String s = "something", t = "maybe something else"; 
if (s == t)  // Legal, but usually WRONG. 
if (s.equals(t)) // RIGHT 
if (s > t) // ILLEGAL 
if (s.compareTo(t) > 0) // CORRECT> 
+0

Спасибо за помощь! – Kieronboz

0

== Использование и != в Java будет проверять, если ссылки указывают на тот же объект. Это маловероятно.

Вместо этого вы хотите использовать метод .equals(), чтобы проверить, равно ли содержимое строк.

if (!tempuser.equals("a")){ 
    // Do stuff 
} 
+0

Спасибо за помощь! – Kieronboz

0

Как, без сомнения, бесчисленные другие говорят, к тому времени я уже занес это ответ, == проверяет, является ли ссылка на объект слева (Струнный tempuser в данном случае) равна ссылки объекта справа (строка «a»). То, что вы, вероятно, хотите сделать, это использовать метод String.equals() следующим образом:

if(!tempuser.equals("a")) { 
    //Foo 
} else { 
    //Barr 
} 

Более полный ответ можно увидеть here.

1

Вам нужно использовать equals() с объектом.

if (tempuser == null || !tempuser.equals("a")) { 
    System.out.println("FAIL"); 
} //etc. 

Причина в том, что == проверяет, является ли это той же ссылкой. Это работает для примитивов, таких как int, но для объектов вам нужно полагаться на реализацию метода equals() для инструкций класса для проверки эквивалентности.

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