Почему код всегда возвращает true?
Пользователь должен ввести с консоли букву "а", чтобы высветилось "Вы ввели правильный символ, спасибо". В обратном случае уведомление должно быть таким: "Ошибка! Вы ввели неверный символ". Но даже при неправильных символах всегда высвечивается "Вы ввели правильный символ, спасибо".
import java.util.Scanner;
import java.util.regex.Pattern;
public class StreamReader {
public static void main(String[] args){
System.out.println("Введите а");
Scanner scan = new Scanner(System.in);
String s = scan.nextLine();
System.out.println(s);
String input = "a";
boolean foo = Pattern.matches("a",input);
if(foo){
System.out.println("Вы ввели правильный символ, спасибо");
}else{
System.out.println("Ошибка! Вы ввели неверный символ");
}
}
}
Ответы (1 шт):
Автор решения: Zhenyria
→ Ссылка
Смотрите внимательней.
String s = scan.nextLine();
System.out.println(s);
String input = "a";
boolean foo = Pattern.matches("a",input);
Строка пользователя считалась в переменную s. А вы сравниваете строку "a" и переменную input. Естественно, foo всегда будет true.
Именно поэтому переменные и методы должны называться нормально, а не абстрактными s, a, 123 и т.д. Если бы вы s переименовали в actualStr, а input в expectedStr, скорее всего никакой ошибки бы не было.