2013-11-07 4 views
2

У меня есть программа, в которой я делаю, когда пользователь вводит настроение, на нем будет выводиться цитата. Мне нужно сообщить программе
if the user is happy, then output this text Проблема в том, что я не знаю, как заставить программу распознавать ввод и выводить текст на основе этого ... вот что я имею для кода до сих пор.Как сравнить строки в java

import java.util.Scanner; 
public class modd { 
    public static void main(String arrgs[]) { 
     System.out.println("Enter your mood:"); 
     Scanner sc = new Scanner(System.in); 
     String mood = sc.nextLine(); 

     if (sc = happy) { 
      System.out.println("test"); 

      if (sc = sad) { 
       System.out.println("I am sad"); 
      } 
     } 
    } 
} 
+0

Я бы начните с ознакомления с [Учебником по Java] (http://docs.oracle.com/javase/tutorial/java/data/strings.html) на 'String's – MadProgrammer

+0

Узнайте, как сравнивать строки. 'switch' также может помочь. Также ваш ввод - это «настроение» (не 'sc'). –

ответ

1

Прежде всего, это выглядит, как вы имеете дело с неправильной переменной sc. Думаю, вы хотели сравнить mood.

При работе со строками всегда используйте .equals(), а не ==. == сравнивает ссылки, которые часто ненадежны, а .equals() сравнивает фактические значения.

Это также хорошая практика, чтобы либо преобразовать вашу строку во все прописные буквы, либо все в нижнем регистре. В этом примере я использую строчный регистр с .toLowerCase(). .equalsIgnoreCase() также является еще одним быстрым способом решения любых проблем.

Я также рекомендовал бы if-else-statement, а не второй if-statement. Ваш код будет выглядеть следующим образом:

mood=mood.toLowerCase() 

if (mood.equals("happy")) { 
    System.out.println("test"); 
} 

else if (mood.equals("sad")) { 
    System.out.println("I am sad"); 

} 

Это все довольно основные концепции Java, так что я бы рекомендую прочитать более подробно о некоторых из них. Вы можете проверить некоторые из документации и/или другие вопросы здесь:

+0

Спасибо за ответ! Я очень ценю это. Если ты не возражаешь сказать мне еще одну вещь; Как настроить вывод на что-либо еще. Скажите, что пользователь вводит текст, который не распознается программой, как бы я выводил что-то вроде «Mood not Understood» или что-то еще? – Hasteify

+0

Вы можете сделать окончательный оператор 'else', который будет печатать ваше сообщение. Если «настроение» прошло каждое условие без соответствия ни одному из них, ваша программа напечатала сообщение в конце. Я тоже рад помочь. – Wold

+0

@Hasteify Switch будет лучше, если это так. – user2705620

3

Брус сравнения строк как этот

if (sc = happy) // also, you never declare a happy variable. So use the 
       // stirng literal like I did below 
// also can't compare to Scanner instance 
// instead compare to mood 

Использование составляет

if ("happy".equals(mood)) { // Caught commenter, can't use sc to compare, use mood 
    // do something 
} 

Кроме того, если в будущем, вам необходимо использовать = операцию сравнения (для чего-нибудь, кроме строк) , вы должны использовать double ==

+0

'sc' является экземпляром' Scanner'. –

+0

Спасибо, не поймал. –

1

Всегда используйте метод .equals (..) для сравнения значения String s ..

if (mood.equals("happy")) 
    System.out.println("test"); 

if (mood.equals("sad")) 
    System.out.println("I am sad"); 
1

это должно быть, как это

if ("happy".equals(mood) 
{ 
    System.out.println("IM HAPPYYYYYYY!!!!"); 
} 
0

Вы должны исправить следующие вещи:

  1. одиночный = означает назначение, а не сравнение.

  2. Я предполагаю, что вы хотите проверить, соответствует ли введенная строка «счастливой» и «печальной». Использовать метод вместо «==» для проверки строковых значений.

  3. почему вы положили if (sc = sad) внутрь if (sc = happy).внутренняя проверка никогда не будет выполнена.

  4. Вам нужно проверить значения, введенные с консоли, а не использовать Scanner sc.

Так что я думаю, что вам нужно изменить код, как следующим образом:

Струнный настроение = sc.nextLine();

if (mood.equals("happy")) { 
     System.out.println("test"); 
    } 

    if (mood.equals("sad")) { 
     System.out.println("I am sad"); 
    } 
1

Как я думаю, что вы можете подойти к этой проблемы путем определения набора заранее определенных параметров ввода для пользователя, чтобы выбрать из затем реагировать соответствующим образом на основе там могут быть, например:

System.out.println ("Enter you mood: [1 = happy,2 = sad,3 = confused]"); 
int input = new Scanner(System.in).nextInt(); 

switch (input) 
{ 
    case 1: System.out.println ("I am happy");break; 
    case 2: System.out.println ("I am sad");break; 
    default: System.out.println ("I don't recognize your mood"); 
} 
Смежные вопросы