おはようございます、何も入力しないとループがelse条件になるのはなぜですか?
私はこのループがまったく機能しない理由を失っています。それは私のアプリケーション全体を台無しにしています。以下のコードです:
System.out.println("Please tell me what to count till?");
do
{
try
{
newEndingValue= input.nextInt();
if(newEndingValue >= 0 || newEndingValue <= 0)
{
break; //breaks the loop
}
}
catch (InputMismatchException e)
{
System.out.println("My Apologies, but COMMAND NOT RECOGNIZED!" + "\nPlease tell me what to count till?");
input.next();
}
}
while(!input.hasNextInt());
v.setEndingValue(newEndingValue);
System.out.println("Please tell me what to count from?");
if(increasingOrDecreasing.equalsIgnoreCase("Increasing")|| increasingOrDecreasing.equals("++") || increasingOrDecreasing.equals("+"))
{
do
{
try
{
newInitialValue = input.nextInt();
if(newInitialValue < v.getEndingValue())
{
break;
}
else{
System.out.println("My Apologies, but starting point value must be smaller than ending point value!" + "\nPlease tell me what to count from?");
newInitialValue = (v.getEndingValue()+10);//overrides the value to something that forces the loop back
}
}
catch (InputMismatchException e)
{
System.out.println("My Apologies, but COMMAND NOT RECOGNIZED!" + "\nPlease tell me what to count from?");
input.next();
}
}
while(!input.hasNextInt() || newInitialValue > v.getEndingValue());
}
else
{
do
{
try
{
newInitialValue = input.nextInt();
if(newInitialValue > v.getEndingValue())
{
break; //breaks the loop
}
else{
System.out.println("My Apologies, but starting point value must be larger than ending point value!" + "\nPlease tell me what to count from?");
newInitialValue = (v.getEndingValue()-10);//overrides the value something that forces the loop back
}
}
catch (InputMismatchException e)
{
System.out.println("My Apologies, but COMMAND NOT RECOGNIZED!" + "\nPlease tell me what to count from?");
input.next(); //consumes the erroneously typed string value
newInitialValue = (v.getEndingValue()-10);
}
}
while(!input.hasNextInt() || newInitialValue < v.getEndingValue());
}
だから出力が無入力されたが、その後、1000年、次のように:
何までカウントすることを教えてください?
なし
私の申し訳ありませんが、コマンドは認識されません!
何をカウントするか教えてください。
何をカウントするか教えてください。
私の謝罪ですが、開始点の値は終了点の値よりも小さくなければなりません!
何をカウントするか教えてください。
なぜ2番目に書かれたelse文にまっすぐ行くのですか? なぜnewInitialValueのユーザー入力をスキップしますか? ますのでご注意くださいその編集コードはnewEndingValueのための文字列を入力して、正しく番号を入力した後、以下の値ブロックを終了した後、これは私のエラーを私のRIDが、場合は再び走った別のものを生成し、ユーザが協力した場合:
...
newInitialValue = input.nextInt(); //essentially gets skipped over by compiler only when previous catch statement is triggered
System.out.println("Please tell me what to count from?");
if(increasingOrDecreasing.equalsIgnoreCase("Increasing")|| increasingOrDecreasing.equals("++") || increasingOrDecreasing.equals("+"))
{...
"しかし、開始点の値は終了点の値より小さくなければならない"ので、if(incre ...)ループとdoループとtryループでそれぞれの作業を推測することができます。しかし、newI ... = input ...とif(newIntia ...)のコード行をスキップします。私は手動でnewInitialValue = 2(パラメータ内)を入力しても、このelse節に移動します。
をオーバーライドするあなたのコードが意味をなさないのであれば、どの時点でロジックが 'else'ブロックに落ちているのかを指摘できますか? – px06
ブレークポイントを設定し、コードがどのように流れるかを確認します。 – geft
私がキャッチコマンドを必要とせずに実行したときにうまくいきました。ループしたときのキャッチについての何かが、その値のために働くが、次のコードブロックが壊れてしまう。 –