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

最後の行は、そのテキストをプリントライターで指定されたtxtファイルに出力するため、out.printlnです。これはすべてクラスの割り当てなので、ドキュメントから呼び出す必要はなく、情報を格納するだけです。そして、最終的にはい、私はちょうど入力を打つ以外の入力のいくつかの形式があることを確認する必要があります。 –

+0

あなたは正しいです、それについてはごめんなさい – Li357

答えて

3

1回の印刷/スキャンだけで、それを再構築するのはどうでしょうか?

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

ありがとうございます!私はその正確な情報を探しましたが、何とか私はそれを見つけることができませんでしたが、私は間違った場所を探していたと思います。 –

関連する問題