2017-09-24 14 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

的是你這個人之前調用該方法?請顯示它。 –

+0

我從主方法調用此方法,主方法完美地工作,此方法僅確定主方法的while循環是否應該繼續或終止。 – user6831363

+0

不,它不。它在'next()'中被阻塞。 NB'next()'不打印提示。你在濫用它。 – EJP

回答

0

可能把另一個else,因爲反正你問他們一個適當的值,即使輸入是Y起初還有:

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 

as

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

return choiceSelector; // the boolean value 
+1

這解決了它,謝謝! – user6831363

+0

@ user6831363如果確實有幫助,請接受它作爲參考答案。 :) – nullpointer

相關問題