2016-07-02 10 views
0

У меня возникли трудности с запуском моего заявления «if». Когда я ввожу «Мне нравится мое« все », которое должен искать CharSequence, код выдает ошибку из инструкции else. Я попытался проверить, не содержит ли метод contains пробелов пробел, пытаясь идентифицировать только одну букву с помощью CharSequence. Это не помогло. Я также попытался изменить метод contains в boolean и запустить оператор if, если логическое значение было истинным. Это тоже не сработало. Я немного искал другой код и, похоже, выглядел похожим. Eclipse не помещает никаких ошибок, которые я только начинаю, и мало знаю, что еще нужно предпринять. Если есть дополнительные подсказки о том, как очистить код или методы, которые могут работать лучше. Прошу дать конструктивную критику.Как использовать метод contains с инструкцией if, else?

import java.util.Scanner; 

public class hello { 

    public static void main(String args[]) { 

     Scanner scan = new Scanner(System.in); 
     try { 
      System.out.println("Hi, what is your name?"); 
      String name1 = scan.next(); 
      System.out.println("Hello "+ name1 + ". Tell me what you like about yourself?\n" 
        + "Please pretext what you like about yourself with the phrase 'I like my'."); 
      String selfEsteem = scan.next(); 
      CharSequence searchString = "I Like my"; 

      if (selfEsteem.contains(searchString)) { 
       selfEsteem = selfEsteem.replace("my", "your"); 
       System.out.println(selfEsteem + "also."); 
      } else { 
       System.err.println("Error: User did not use 'I like my' input format"); 
      } 
     } finally { 
      scan.close(); 
     } 
    } 

} 

выход:

Привет, как тебя зовут? Janet Hello Janet. Расскажи мне, что тебе нравится? Пожалуйста, представьте себе, что вам нравится, с фразой «Мне нравится моя». Мне нравится моя сисек Ошибка: Пользователь не использовал «Мне нравится мой» входной формат

+1

Проверьте корпус на слово, как, возможно? Содержит должен быть чувствительный к регистру, и вы ищете «Мне нравится мой», а не «Мне нравится мой». – daf

+0

Я преобразовал «L» в «l», сохранил файл и тщательно набирал ответы только для получения такое же сообщение об ошибке? Любые другие идеи? – ucodebro3

+0

Моя ошибка была в методе scan.next() вместо использования scan.nextLine(). Спасибо за ваше время. – ucodebro3

ответ

0

Вашего searchString является "I Like my", в то время как ваш текст имеет "I like my". Поэтому я предполагаю, что ваш пользователь войдет в нижний регистр, а contains чувствителен к регистру, чтобы он не нашел его.

Изменить на:

CharSequence searchString = "I like my"; 
+0

Я внесли предлагаемые изменения и все еще получаю сообщение об ошибке. Я также попытался объявить searchString как тип String вместо типа CharSequence и был не прав. – ucodebro3

0

Вы ищете "I Like my" в то время как ваши массажи ошибки говорит, что это должно быть 'I like my'.

Это чувствительный к регистру.

Либо введите "I Like my", либо измените свой searchString на "Мне нравится мой".

+0

Я изменил свой поискString на «Мне нравится мой», и я встретил то же сообщение об ошибке из инструкции else. Какие-нибудь дополнительные идеи? – ucodebro3

+0

Можете ли вы скопировать точный ввод, который вы вводите? – Shiro

+0

Я нашел свою ошибку. Я использовал только scan.next() вместо scan.nextLine(), который бросал все дурацкое. Спасибо за ваше время. – ucodebro3

0

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

if (selfEsteem.containsIgnoreCase(searchString)) 
    ... 

вместо

if (selfEsteem.contains(searchString)) 
    ... 

Тогда это не имеет значения, какое дело типы пользователей в.