2017-09-24 11 views
-1

私のプログラムの他のすべては、この単一のメソッドを除いて動作します。ここでは、sc.next()をスキップし、ifの場合にハングします。私のJavaプログラムは私の入力をスキップし、IF文でハングアップするのはなぜですか?

public static String getChoice() { 
    boolean choiceSelector = false; 

    // construct a Scanner object for getting input 
    Scanner sc = new Scanner(System.in); 

    System.out.println("Do you wish to continue? Y/N"); 
    String choice = " "; 

    do{ 
    choice = sc.next(); 

    if(choice.equalsIgnoreCase("Y")){ 
     choice="Y"; 
     choiceSelector = true; 
    } 
    if(choice.equalsIgnoreCase("N")){ 
     choice="N"; 
     choiceSelector = true; 
    } else 
     choice = sc.next("Please enter a correct value."); 

    } while(choiceSelector == false); 

    return choice; 
}//end getChoice 
+0

あなたはこの1つ前に呼び出す方法は何ですか?それも表示してください。 –

+0

私はmainメソッドからこのメソッドを呼び出していますが、mainメソッドは完全に機能しています。このメソッドは、メインメソッドのwhileループを続行するか終了するかを決定します。 – user6831363

+0

いいえ、そうではありません。 'next()'でブロックします。 NB 'next()'はプロンプトを表示しません。あなたはそれを悪用しています。 – EJP

答えて

0

とにかく入力が同様に最初にY場合であっても、適切な値のためにそれらを頼むので、おそらく、別のelseを置く:

if(choice.equalsIgnoreCase("Y")){ 
    choice="Y"; 
    choiceSelector = true; 
} else if(choice.equalsIgnoreCase("N"))... 

choice = sc.next("Please enter a correct value."); // not a valid pattern provided as an input here 
を破ります

として

System.out.println("Please enter a correct value."); 
choice = sc.next(); 

return choiceSelector; // the boolean value 
+1

これで解決しました。ありがとうございます! – user6831363

+0

@ user6831363それが参考になった場合は、それを参考文献の回答として受け入れますか? :) – nullpointer

関連する問題