0

有人可以帮我一些代码吗?我应该检查传递的字符串是否为 2 个字符串和 3 个整数,可以正常工作,但如果 1 个整数为零,则它不起作用

所以如果它是 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;

导入 java.util.regex.Matcher;
导入 java.util.regex.Pattern;

公共类主要{


    /**
     * @param 参数
     */
    公共静态无效主要(字符串[]参数){
        新的主要();
    }

    公共主要(){
        String[] testInputs = new String[] {"CM045", "CM450"};

        for(字符串输入:testInputs){
            System.out.println("模块 " + input + " 为 " + (checkModule(input) ? "valid" : "invalid"));
        }
    }

    公共布尔检查模块(字符串模块){
        模式 p = Pattern.compile("[AZ]{2}[0-9]{3}");
        匹配器 m = p.matcher(Module.toUpperCase());
        返回 m.matches();
    }

}
于 2012-05-01T21:38:37.990 回答
0

如果 String 为“045”,则 Integer 值为 45,因此 num 的长度不能为 3

用这个

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

它必须工作

于 2012-05-01T21:25:26.833 回答