0

私がしたいこと:

  • ユーザー入力を文字のみに制限する(小文字と大文字)
  • 間違った入力に関するエラーメッセージ
  • 正しい入力になるまでループする

同様の質問があるかなりの数のサイトが、正規表現、パターン、およびマッチャーを提案しました。私はAPIを見て、それは私を大いに混乱させました...

これが私が試したことです。

public class restrictinput {
    public static void main (String args [] ) {
        Scanner sc = new Scanner (in);
        System.out.println ("Enter  blah ");
        String blah = sc.nextLine();
        Pattern userInput = Pattern.compile("^[a-zA-Z]+$");
        Matcher inputCheck = userInput.matcher("blah");
    }
}

これはコンパイルされますが、それが正しい/最良の方法であるかどうかはわかりません。ただし、別の文字タイプを入力すると、残りのコードが実行されるだけです。

正しい文字タイプを受け取った場合にのみ実行させるにはどうすればよいですか?また、エラーをユーザーに知らせるために何を使用すればよいですか?

与えられたコードが間違っている場合、それを変更するにはどうすればよいですか?

4

2 に答える 2

2

これは宿題のように思われるので、あまり多くを与えたくはありませんが、ifステートメントwhileまたはforループを調べたいと思います。これにより、特定の基準が満たされた場合に条件付きでコードが実行されます。

于 2012-05-15T15:19:44.850 に答える
1

さて、ここで修正する必要のあることがいくつかあります。私が最初に気づいたのはあなたが欲しいということです

userInput.matcher(blah);

いいえ

userInput.matcher("blah");

文字列だけでなく、文字列と一致しているからです"blah"

さて、あなたの質問の大部分について。最初に必要なのは、Matcherオブジェクトを確認することです。具体的には、Matcher.find()を調べます。

2つ目は、コードに何らかの条件付きループを追加して、入力を求め続けるようにする必要があることです。多分次のようなものです:

bool result = true;
do {
    String blah = sc.nextLine();
    Pattern userInput = Pattern.compile("^[a-zA-Z]+$");
    Matcher inputCheck = userInput.matcher("blah");
    result = //boolean check from your matcher object
    if(result) {
        //Complain about wrong input
    }
} while(result);
于 2012-05-15T15:26:03.187 に答える