2013-09-05 2 views
-1

Я пытаюсь создать программу, в которой я ввожу имя формы, и она сообщает мне, сколько у нее сторон. Кажется, я не могу заставить его работать. Может ли кто-нибудь объяснить, как это сделать?Попытка использовать «if» с введенной пользователем строкой

import java.util.Scanner; 

public class Shapes { 

    public static void main(String[] args) { 
    Scanner reader = new Scanner(System.in); 
    String shape; 

    System.out.print("Enter shape: "); 
    shape = reader.next(); 

    if (shape == "hexagon") { 
     System.out.println("A hexagon has 6 sides."); 
    } 

    if (shape == "decagon"); { 
     System.out.println("A decagon has 10 sides."); 
    } 


    } 

} 
+4

Не используйте '==' для сравнения значений String, вместо этого используйте метод 'equals'' String'. – rgettman

+0

Строки должны всегда сравниваться с использованием метода 'equals()', не использующего '==' –

+0

Если вы используете Java 7, вы можете использовать оператор switch на объекте 'switch'. – Obicere

ответ

0

В Java, вы хотите использовать .equals() со строкой.

Например:

if(shape.equals("hexagon")) 

Поскольку оператор == спрашивает, является ли объект строки shape точно так же, как «шестиугольника» (которой нет - шестиугольник является постоянным и shape является объектом).

0

объекты сравниваются с equals в Java:

if (shape.equals("hexagon")) { 
    System.out.println("A hexagon has 6 sides."); 
} 

только значение примитивных типов (INT, длинные, двойные и т.д.) можно сравнить с ==. Если вы сравниваете объекты с ==, вы сравниваете object identity, а не значение.

0

Используйте shape.equals("triangle"), если

Оператор, ==, тесты, чтобы увидеть, если два опорных объекта переменные ссылаются на точно такой же экземпляр объекта.

Метод, .equals(), проверяет, эквивалентны ли эти два объекта друг другу, но они не обязательно должны быть одним и тем же экземпляром одного и того же объекта.

Вы можете использовать == с примитивными типами. Для String use equals()

+0

Я использовал shape.equals ("hexagon"). но теперь, когда я печатаю в шестиугольниках, это дает мне оба: «Шестиугольник имеет 6 сторон» и «Декагон имеет 10 сторон» – user2744425

+0

использовать if и else if и использовать метод .equals() в обоих условиях – SKT

+0

Это то, что у меня есть все еще делает то же самое. \t \t System.out.print ("Введите форму:"); \t \t shape = reader.next(); \t \t \t \t, если (shape.equals ("шестиугольник")) { \t \t \t System.out.println ("Шестиугольник имеет 6 сторон."); \t \t} \t \t \t \t иначе, если (shape.equals ("десятиугольник")); { \t \t \t System.out.println («Декагон имеет 10 сторон»); \t \t} – user2744425