2016-07-09 78 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

谢谢!我寻找确切的信息,但不知何故,我找不到它,但我想我正在寻找错误的地方。 –