2013-06-03 4 views
1
import java.util.Scanner; 

public class Poop { 
    public static void main (String args[]){ 
    Scanner input = new Scanner(System.in); 
    String Gender; 
    System.out.println("Are you a boy or a girl?"); 
    Gender = input.nextLine(); 

    if(Gender == "boy"){ 
     System.out.println("You are a boy."); 
    } 
    if(Gender == "girl"){ 
     System.out.println("You are a girl."); 
    } 
    } 
} 

Хотелось бы узнать, почему эта программа не работает. В Eclipse говорится, что ошибок нет, но когда я запускаю его и набираю мальчика или девочку, ничего не происходит, и я не понимаю, почему.Сравнение строк неверно возвращается?

Также, пожалуйста, не высмеивайте программу. Я тестирую себя на строковых переменных.

+16

Мое лучшее предположение заключается в том, что современный компилятор находит вашу характеристику мальчиков и девочек, слишком сексистских, чтобы принимать и просто игнорирует ваш код. –

+1

Да. Это и строка сравнивается. Потому что я симпатичный * и * крутой. За исключением симпатичных и прохладных деталей. –

+0

Каждый раз, когда кто-то сравнивает 'String' с '==' разработчиком криками ... –

ответ

9

Если вы сравниваете строки, не используйте ==, но использовать equals():

if(Gender.equals("boy")){ 
    System.out.println("You are cool."); 
} 
if(Gender.equals("girl")){ 
    System.out.println("You are cute."); 
} 

В Java == сравнивает идентификаторы, а не содержимое объекта! Поэтому в вашем случае вы сравниваете объект, который вы читаете, с двумя другими объектами. Это всегда будет терпеть неудачу.

С другой стороны, equals() сравнивает содержимое обоих объектов и таким образом преуспеет здесь.

+1

+1 для объяснения, почему == не является правильным выбором. – MrHappyAsthma

+0

Спасибо, я знаю, что это было просто, но я новичок в java. Также спасибо за быстрый ответ. – user2448250

+1

И еще один +1, объясняющий это для zillionst time ... –

1

Использование .equals() для струнного Comparision не ==

Я просто ответил на ответ: точно такая же проблема Использование приравнивает метод для струнного Comparision.

== не будет сравнивать строковое значение строкового объекта, которое просто проверяет для ссылочного равенства.

В этом отношении, если сравнить две строковые объекты с одинаковым значением они не равны по == оператора

import java.util.Scanner; 
public class Poop { 
    public static void main (String args[]){ 
     Scanner input = new Scanner(System.in); 
     String Gender; 
     System.out.println("Are you a boy or a girl?"); 
     Gender = input.nextLine(); 

     if(Gender.equals("boy")){ 
     System.out.println("You are cool."); 
     } 
     if(Gender.equals("girl")){ 
     System.out.println("You are cute."); 
     } 
    } 
} 
+0

Спасибо, я знаю, что это было просто, но я новичок в java. Также спасибо за быстрый ответ. – user2448250

1

Это, вероятно, дубликат этого ответа: What is the difference between == vs equals() in Java?

Использование equals вместо == в java для проведения мешанины

import java.util.Scanner; 
public class Poop { 
public static void main (String args[]){ 
    Scanner input = new Scanner(System.in); 
    String Gender; 
    System.out.println("Are you a boy or a girl?"); 
    Gender = input.nextLine(); 

    if(Gender.equals("boy")){ 
     System.out.println("You are cool."); 
} 
if(Gender.equals("girl")){ 
    System.out.println("You are cute."); 
} 
} 
} 
+0

Спасибо, я знаю, что это было просто, но я новичок в java. Также спасибо за быстрый ответ. – user2448250

0

Просто понял несколько одинаковых ответов. Причина же, использовать .equals вместо ==

import java.util.Scanner; 
public class Poop { 
public static void main (String args[]){ 
    Scanner input = new Scanner(System.in); 
    String Gender; 
    System.out.println("Are you a boy or a girl?"); 
    Gender = input.nextLine(); 

    if(Gender.equals("boy")){ 
     System.out.println("You are cool."); 


} 
if(Gender.equals("girl")){ 


    System.out.println("You are cute."); 
} 

}} 
+0

Спасибо, я знаю, что это было просто, но я новичок в java. Также спасибо за быстрый ответ. – user2448250

0

Используйте .equals для сравнения строк.

if(Gender.equals("boy")) 

Или вы можете стажер вход, как это так, а затем использовать ==

Gender = input.nextLine().intern(); 
if(Gender=="boy") 

Интересная программа, хотя: D

+0

Спасибо, я знаю, что это было просто, но я новичок в java. Также спасибо за быстрый ответ. – user2448250

0

Я получаю от этого ...

== проверяет, являются ли два объекта String одинаковым объектом.
.equals() тесты, если две строки имеют одинаковое «значение»

Измените тесты на if(Gender.equals("boy")) и т.д.

Java не Javasript.

+0

Спасибо, я знаю, что это было просто, но я новичок в java. Также спасибо за быстрый ответ. – user2448250

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