2015-09-09 5 views
0

Как сравнить строку с несколькими словами в инструкции if/then? Я пробовал это:Сравнение строк с несколькими словами

System.out.println("How would you describe your active lifestyle? Sedentary, Somewhat Active, or Active?"); 
     String lifestyle = sc.next(); 
     double activity; 
     if(lifestyle.equalsIgnoreCase("sedentary")) 
      { 
        activity = 0.2; 
      } 
     else if(lifestyle.equalsIgnoreCase("somewhat active")) 
      { 
       activity = 0.3; 
      } 
     else 
      { 
       activity = 0.5; 
      } 

Но когда вы вводите «несколько активным», он назначает переменную активность 0,5. Как я могу заставить его зарегистрировать, что «несколько активным» является вещь?

+0

Также вы должны искать несколько активных или сидячих, а не сидячих или несколько активных. (Случаи) после изменения sc.nextLine(). –

ответ

4

Метод next() на Scanner извлекает следующий токен, который по умолчанию является пробелом. Переменная lifestyle содержит только "somewhat".

Заменить звонок на next() с вызовом nextLine(), который получит все слова на линии.

1

Но когда вы вводите «несколько активных», он присваивает переменной Активность в до 0,5

Поскольку в "somewhat active"next() будет извлекать только somewhat в качестве маркера. Метод next() только читает до пробела. В качестве разделителя по умолчанию space. Вы можете указать delimeter i.e. в вашем случае, и он будет читать токен, пока на входе не появится . или лучше использовать метод nextLine.

Scanner sc = new Scanner(System.in); 
sc.useDelimiter("\\.");//provide input as somewhat active. 
1

При использовании sc.next()Scanner класса читает только «несколько», т.е. (он читает только до пробела или пробела).

Вместо этого вы используете sc.nextLine() Класс Scanner будет читать полную строку как «несколько активную».

В общем, если вы хотите прочитать только одно слово, используйте метод next();. Если вы хотите прочитать строку (более одного слова, включая пробелы), используйте nextLine();

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