2016-07-09 118 views
-1

我知道這可能看起來像一個簡單/愚蠢的問題,但我試圖保持我的代碼儘可能有組織和簡單。我遇到的問題是用於驗證的while循環。我正在驗證一個字符串輸入。我使用驗證只是爲了確保輸入內容。我希望while循環運行的唯一時間是根本沒有輸入任何信息,所以我想包括每個字符和符號。我有的問題是,我想知道是否有一個簡短的方法來包含每個可能的字符,除了單純地按下回車鍵。這是簡單的代碼片段。如何驗證使用while循環的輸入字符串

Scanner input = new Scanner(System.in); 
PrintWriter out = new PrintWriter("contactRequest.txt"); 


System.out.print("Please enter your name: "); 
String email = input.nextLine(); 
while(!email.matches("[a-zA-Z]+")); 
{ 
    System.out.println("\nPlease enter a valid E-Mail."); 
     email = input.nextLine(); 
} 
out.println("E-Mail: " + email); 
+0

您是否在測試是否有輸入?如果是這樣,請使用'hasNextLine()' – Li357

+0

最後一行是out.println,因爲它會將該文本打印到由打印作者指定的txt文件中。所有這些都是課堂作業,所以我不必從文檔中調用,只需存儲信息即可。最終是的,我只需要確保除了敲入輸入之外還有其他形式的輸入。 –

+0

你是對的,很抱歉 – Li357

回答

3

把它重組爲一個do-while而且只有一個打印/掃描呢?

Scanner input = new Scanner(System.in); 
PrintWriter out = new PrintWriter("contactRequest.txt"); 

String email; 
String prompt = "Please enter your name: "; 
do { 
    System.out.print(prompt); 
    email = input.nextLine(); 
    prompt = "\nPlease enter a valid E-Mail.\n" 
} while (!email.matches("[a-zA-Z]+")); 

out.println("E-Mail: " + email); 
+0

這看起來有點結構化,但它並沒有真正回答我的問題。我的代碼正常工作我只需要驗證要求(a-zA-Z)來計算字符數。我可以讓它工作,但我可以想出如何做到這一點的唯一方法是手動輸入每個可能的字符是否有像a-z因子這樣的快捷鍵字母帶有特殊字符的字母a到z? –

+0

https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html –

+0

謝謝!我尋找確切的信息,但不知何故,我找不到它,但我想我正在尋找錯誤的地方。 –