0

誰かが私にいくつかのコードを手伝ってもらえますか?渡される文字列が2文字列と3 intであるかどうかを確認することになっていますが、1intがゼロの場合は機能しません

したがって、CM044の場合は機能しませんが、CM450は機能します。誰か助けてください。

public boolean checkModule(String Module) {

    if(Module.length() == 5){
      boolean hasString = false;
      boolean hasInt = false;
      String letters = Module.substring(0, 2);
      Pattern p = Pattern.compile("^[a-zA-Z]+$");
      Matcher m = p.matcher(letters);
      if (m.matches()) {
        hasString = true;
      }
      String numbers=Module.substring(2,5);
      try {
        int num = Integer.parseInt(numbers);
        String n = num + "";
        if (num >0 && n.length() == 3)
            hasInt = true;
      } catch (Exception e) {
      }
      if (hasInt && hasString) {
        return true;
      }
     }else{
      return false;
     }

    return false;
}

ありがとう

4

2 に答える 2

1

正規表現を使用する場合は、正規表現に固執し、変化しないようにする必要があります。

パッケージcom.examples;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

パブリッククラスメイン{


    / **
     * @param args
     * /
    public static void main(String [] args){
        new Main();
    }

    public Main(){
        String [] testInputs = new String [] {"CM045"、 "CM450"};

        for(String input:testInputs){
            System.out.println("モジュール"+ input + "is" +(checkModule(input)? "valid": "invalid"));
        }
    }

    public boolean checkModule(String Module){
        パターンp=Pattern.compile( "[AZ] {2} [0-9] {3}");
        マッチャーm=p.matcher(Module.toUpperCase());
        m.matches();を返します。
    }

}
于 2012-05-01T21:38:37.990 に答える
0

文字列が「045」の場合、整数値は45であるため、numの長さを3にすることはできません。

これを使って

if(num>=0) {
  hasInt = true;
}

そしてそれは機能しなければなりません

于 2012-05-01T21:25:26.833 に答える