Дано: пользователь вводит строку, если в строке есть слово "Hello" вывести "Hi", если есть слово "Love" вывести "Love you too"
А если есть оба слова то вывести "Hi" "Love you too" "Hi, love you too". Выглядит примерно так:
Строка: "Hello, nice weather" Вывод программы: "Hi"
Строка: "I Love you" Вывод программы: "Love you too"
Строка: "Hello, I Love you" Вывод программы: "Hi" "Love you too" "Hi, Love you too"
Это все надо сделать с помощью if-else или цикла. У меня возникла проблема в последнем случае, так как если в введенном предложении совпадают оба слова, то надо вывести обе предыдущие фразы + ещё одну новую, и того в выводе в последнем случае должно вывести 3 фразы. Пример моего кода:
Scanner input = new Scanner(System.in);
String phrase = input.nextLine();
if (phrase.equals("Hello")) {
System.out.println("Hi");
} else if (phrase.equals("Love")) {
System.out.println("Love you too");
} else if ((phrase.equals("Hello")) && (phrase.equals("Love"))) {
System.out.println("Hi, Love you too");
}
Справиться с проблемой, помогло удаление else, спасибо!
Ответы (2 шт):
Т.к. проверять нужно не на равенство, а не вхождение, то и использовать нужно не .equals(), а .contains().
Используйте contains() для проверки вхождения слова в строку. Для того, чтобы условия не исключали друг друга и программа работала согласно Вашим ожиданиям, вместо "else if" стоит использовать просто "if".
Для игнорирования регистра можно изначально привести входную строку к нижнему регистру методом toLoverCase() и производить поиск именно в нижнем регистре.
Scanner input = new Scanner(System.in);
String phrase = input.nextLine().toLowerCase();
if(phrase.contains("hello")){
System.out.println("Hi");
}
if(phrase.contains("love")){
System.out.println("Love you too");
}
if(phrase.contains("hello") && phrase.contains("love")){
System.out.println("Hi, Love you too");
}