2017-04-18 12 views
0

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()

+1

が重複する可能性が)、nextInt()または他のnextFoo ()メソッド](http://stackoverflow.com/questions/13102045/scanner-is-skipping-nextline-after-using-next-nextint-or-other-nextfoo) – azurefrog

答えて

0

使用sc.nextLine();。入力は、これらの後に自動的になりません。[スキャナは、次の(を使用した後nextLine()を飛ばしているの

関連する問題