2017-01-07 5 views
1

これは私が大学で働いているプロジェクトのためではありません。今、特定のセクションでは、11文字の長さである必要がある登録番号に関する詳細をユーザーから入力する必要があります。インデックス上の文字(8)と(10)は文字である必要があり、残りは数字である必要があります。誤った文字がユーザーによって入力された場合は、正しく入力されるまで再度入力する必要があります。私は私が見ていない非常に簡単なものでなければならないと感じることに非常に悩まされています。ここで私はこれまでと周りのおもちゃにきたものだ(あなたの心にこのコードは凶悪であり、我々は私のコースでこれ以上のことを学んだしていないとして、非常に基本的なJavaの機能を使用しています)文字列インデックスの複数の文字をチェックして検証する方法は?

String regiNum; 
    boolean validRegi = true; 

    System.out.print("Enter registration num: "); 
    regiNum = keyboard.nextLine(); 

    char firstChar = regiNum.charAt(8), secChar = regiNum.charAt(10); 
    while(validRegi == true){ 
     if(!(firstChar >= 'A' && firstChar <= 'z' && secChar >= 'A' && secChar <= 'z')){ 
      System.out.print("Enter registration num again: "); 
      regiNum = keyboard.nextLine(); 
      validRegi = false; 
     } 
    } 

私ももらっていません他の文字の妥当性をチェックして数字であるかどうかを調べることができます。最高のものは何ですか?たぶんdo whileループですか?信じられないほど愚かな質問に対する謝罪。

+1

恐らくもっとも洗練された解決策ではありませんが、 'string.matches(" \\ d \\ d \\ d \\ d \\ d \\ d \\ d [a-zA-Z] \\ P – Moira

+0

正規表現がこの質問に役立つ解決策ではないと思う - Danielは彼が基本的なJavaをやっていると言っていてwhileループでタグ付けしている。彼のプロジェクトが期待していることがそうであるようです。 – DaveyDaveDave

答えて

0

この方法では、やりたいことはできますか?

boolean isValid(String reg) { 
    //check if length is 11, return false if not 
    if(reg.length <11){ 
     for(int i=0;i<11;i++) { 
      if(i==8 || i==10) { 
       if(!Character.isLetter(reg.charAt(i))){ 
        return false; 
       } 
      }else{ 
       //check if its a number, return false if not 
       if(!Character.isDegit(reg.charAt(i))){ 
        return false; 
       } 
      } 
     } 
    } 

    return true; 
} 
+0

正しい文字が与えられるまでこのループを作る方法はありますか?しばらくお待ちください? –

+0

はい!しばらくしてから。このメソッドを記述し、呼び出すときにdo-whileやclickの中で何かを実行します。ボタン!注意!答えのアップヴォートは高く評価されます。 :) –

2

最も単純なことは、forループを使用し、文字が1つずつ有効であるかどうかを確認することです。

boolean isValid(String regiNum) { 
    //check if length is 11, return false if not 
    for(int i=0;i<11;i++) { 
     if(i==8 || i==10) { 
     //check if its letter, return false if not 
     }else{ 
     //check if its a number, return false if not 
     } 
    } 
    return true; 
} 
関連する問題