0

我开发了一个拒绝以 00 和 99 开头的数字的功能。

public Boolean valideCode(EditText code_postal){

    String number =     code_postal.getText().toString();

    if (number.charAt(0)==00){


    }

    return false;

}

我怎样才能正确地实现这个功能。

4

7 回答 7

3

使用.startsWith()

if (number.startsWith("00") || number.startsWith("99")) ...

.charAt()返回单个字符,而不是字符串。

(出于纯粹的好奇,为什么会这样?code_postal.getText().toString();从 的名称中.getText(),您会发现它已经返回了一个String......呸。)

编辑因此,根据需要,另一个版本通过首先转换为 int 进行检查...

final int begin = Integer.parseInt(number.subString(0, 2));
if (begin % 99 == 0) // can only be true if number is 0 or 99
    // etc
于 2013-06-07T07:03:24.727 回答
3

if 语句将始终返回 false。

一种解决方案:

if (number.trim().startsWith("00") || number.trim().startsWith("99")){
  System.out.println("not valid");
}
于 2013-06-07T07:04:18.147 回答
2

您可以使用StringindexOf()方法:

if (number.indexOf("00")==0 || number.indexOf("99")==0)

已编辑:-正如我从您的问题主题行“检查前两位数字位于 00 && 99 之间”中所了解的那样,您需要这个。

public static boolean isValid(String name) {
    boolean isValid = true;
    if(name.length()>2){
        name = name.substring(0, 2);
    }
    try {
        int number = Integer.parseInt(name);
        if(number>-1 || number<100){
            isValid = false;
        }
    }
    catch(Exception e){
        isValid = false;
    }
    return isValid;
}
于 2013-06-07T07:03:34.533 回答
2

如果我理解你的问题,特别是标题“介于 00 && 99 之间”,你想要这个

    try
    {
       String s = "45Abc";
       Integer i = Integer.parseInt(s.substring(0,2));
        if (i>00 && i<99)
            System.out.println("True");

    }catch (NumberFormatException e)
    {
        // TODO Auto-generated catch block
        System.out.println("First two characters are not numbers");
    }
于 2013-06-07T07:12:05.487 回答
2

使用您的逻辑如下所示

private boolean isValid(String str) {
        if (str == null)
            return false; 

        String tempStr = null;
        try {
            if (str.length() > 2) {
                tempStr = str.substring(0, 2);
            } else {
                tempStr = str; 
            }

            int number = Integer.parseInt(tempStr);
            if (number >= 0 && number <= 99) {
                return false; //in between 0 to 99
            } else {
                return true;
            }
        } catch (NumberFormatException e) {

        }
        return false;
    }
于 2013-06-07T07:12:24.383 回答
1

检查输入的数字是否以“00”或“99”开头

 public Boolean valideCode(EditText code_postal){

    String number = code_postal.getText().toString();

    if(number.startsWith("00") || number.startsWith("99")){
        return true;
    }
    return false;
}

检查输入的数字是否在“00”和“99”之间

public Boolean valideCode(EditText code_postal){

    String number = code_postal.getText().toString();
    String firstTwoDigits = number.substring(0,2);

    if (Integer.valueOf(firstTwoDigits )>=0 && Integer.valueOf(firstTwoDigits )<=99){
        return true;
    }
    return false;
}

注意:您的问题和描述的标题不同。因此有两个答案。

于 2013-06-07T07:06:39.497 回答
0

只是为了与众不同(效率低下且难以理解):

return !number.matches("^\s?(00|99).+");
于 2013-06-07T07:24:42.633 回答