У меня возникают проблемы с вложением некоторых инструкций if-else, по крайней мере, это то, что я считаю проблемой. Я несколько раз пробовал этот код, пытаясь понять это, поэтому решил вернуть его в исходное состояние и попросить о помощи. Пользователю предлагается ввести нечетное число от 3 до 15. Мне нужно проверить этот ввод, а если он не находится между 3 и 15, выведите сообщение об ошибке. То же самое, если это не нечетное число, ему нужно вывести другое число. При запуске кода ниже, если я вводим четное число, букву или номер < 3 или> 15, я получаю оба сообщения об ошибках. Если входное значение нечетное от 3 до 15, оно работает нормально. Я знаю, что мне нужно различать две ошибки, просто не удалось выяснить, как это сделать и заставить код работать/работать правильно. Также попробовали еще, если не повезло. Конечно, это что-то глупое, так как большинство моих ошибок, похоже, на глупой стороне. Спасибо за вашу помощь!Проблема с вложенными операторами if-else
public static void main(String[] args) {
// Declare variables
String inputString;
boolean done = false;
int numRows = 0;
// Prompt for user input
do
{
inputString = JOptionPane
.showInputDialog("Enter number of rows (odd number between 3 and 15): ");
// Validating input
try
{
numRows = Integer.parseInt(inputString);
}
catch (NumberFormatException e)
{
done = true;
}
if(numRows % 2 == 0) // Validating input is an odd number
done = true;
if((numRows < 3) || (numRows > 15))// Validating input is between 3 and 15
done = true;
else
done = false;
if(done)
JOptionPane.showMessageDialog(null, "Error, not an ODD number. Re-enter odd number between 3 and 15",
"Error", JOptionPane.ERROR_MESSAGE);
if(done)
JOptionPane.showMessageDialog(null, "Error, number not between 3 and 15. Re-enter odd number between 3 and 15",
"Error", JOptionPane.ERROR_MESSAGE);
}
while(done);
}
Используйте фигурные скобки с if/else и сделайте вашу жизнь проще. –
'if ((numRows <3) || (numRows> 15)) // Проверка ввода между 3 и 15' делает противоположное тому, что говорит комментарий – lreeder
Я не понимаю, почему вы не ожидаете, что оба сообщения для печати, когда 'done' является истинным, когда вы явно печатаете оба из них. – Jsdodgers