Я пытаюсь, как самоназначенное упражнение, написать простую программу, которая принимает день рождения и определяет день недели, на который выпадает данная дата. Первая часть программы определяет год. Я использую сканер для сбора пользовательского ввода, а затем цикл do-while, чтобы проверить, может ли вход использоваться (должен быть номер, должен иметь четыре цифры), который повторяется, если вход не соответствует критериям. Я пытаюсь войти в 1998 год, который, очевидно, является числом и четырьмя цифрами, и он повторяет цикл, как будто мой ввод недействителен. Я предполагаю, что есть проблема где-то в моем цикле do-while, но я не смог определить, что это такое. Вот этот код.Вход, собранный моим сканером, обрабатывается неправильно
public static boolean isInteger(String input)
{
try
{
Integer.parseInt(input);
return true;
}
catch(Exception e)
{
return false;
}
}
public static void main(String[] args)
{
String year = "";
String yearcorrect = "";
int ylength = year.length();
boolean yearIsYear = true;
Scanner scan = new Scanner(System.in);
do
{
System.out.println("Please enter the year of your birth.");
year = scan.nextLine();
boolean yearIsNum = isInteger(year);
if (yearIsNum = false || ylength != 3)
{
System.out.println("Input is not a valid year.");
yearIsYear = false;
}
else
{
System.out.println("You entered the year " + year + ". Is this correct?");
yearIsYear = true;
yearcorrect = System.console().readLine();
}
}
while (yearcorrect != "yes" && yearIsYear != true);
'yearIsNum = false' означает, что ваш' if' никогда не пройдет. – ChiefTwoPencils