いくつかの if-else ステートメントのネストに問題があります。少なくともそれが問題だと思います。私はこのコードを理解するために何度か解体したので、元の状態に戻して助けを求めることにしました。ユーザーは、3 から 15 までの奇数を入力するように求められます。その入力を検証し、3 から 15 までの範囲でない場合は、エラー メッセージを出力する必要があります。奇数でない場合も同様で、別の数値を出力する必要があります。以下のコードを実行しているときに、偶数、文字、または <3 または >15 の数字を入力すると、両方のエラー メッセージが表示されます。入力が 3 から 15 の間の奇数であれば、問題なく動作します。2つのエラーを区別する必要があることはわかっていますが、それを行う方法を理解して、コードを適切に実行/機能させることができませんでした。運が悪い場合は、他の方法も試しました。確かにそれはばかげたことですが、私の間違いのほとんどはばかげた側にあるようです。ご協力いただきありがとうございます!
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);
}