Javaのスニペットに軽微な問題があります。私はdoubleまたはintをとり、エラーメッセージを出力し、他の入力でリループしたい。今、私はJavaをかなり新しくしているので、これを達成する最も効率的な方法ではないかもしれませんが、何ができますか?Java、同じ入力で2回ループする
いずれにしても、無効な入力を入力すると、新しい入力を受け入れる前にエラーメッセージが2回印刷されるという問題があります。 sc.next()
を使用しますが、ユーザーがスペースを含む文字列を入力すると、別の無効な入力を受け入れたくありません。
それは私の教授が何を望んだので、それは明らかにコメントを持っているので、私はそれが
ここに私のコードスニペットです行います。私は何を得る
System.out.println("Enter hours worked: ");
while(hourFinisher == false)
{
//avoids type mismatch by allowing double or int to be entered
if(sc.hasNextDouble())
{
hours = sc.nextDouble();
isDouble = true;
hourFinisher = true;
}
else if(sc.hasNextInt())
{
intHours = sc.nextInt();
isDouble = false;
hourFinisher = true;
}
//in the case of a non-double or int, prints an error message and accepts a new input
else
{
System.out.println("Invalid Input! Please enter valid input.");
sc.nextLine();
}
を明確にするために、ときに私の入力、たとえば'a'
ため、 Invalid Input! Please enter valid input.
が2回あります。
私はそれを2度印刷したくありません。それは冗長です。すべてのポインタが評価されています!
ありがとうございます!他の入力(すなわちnextInt()
、nextDouble()
後
が重複する可能性が)、nextInt()または他のnextFoo ()メソッド](http://stackoverflow.com/questions/13102045/scanner-is-skipping-nextline-after-using-next-nextint-or-other-nextfoo) – azurefrog