比较问题[.equals()]在java中

时间:2012-11-08 22:30:37

标签: java comparison

我正在尝试确定字符串是否包含正int。我的代码是:

public void isInt(String str) throws NotIntException{
    String integer=str.replaceAll("\\d","");
    System.out.println(integer);
    if (!integer.equals("")){
        throw new NotIntException("Wrong data type-check fields where an integer"+
        " should be.");
    }//end if
    if (integer.equals("-")){
        System.out.println(integer);
        throw new NotIntException("Error-Can't have a negative count.");
    }//end if
}//end method

我用字符串“-1”测试它,在replaceAll()之后,它应该变为“ - ”。这应该输入两个if语句。但它只进入第一个。我也尝试了==比较,以防万一,但它也没有用。对我来说奇怪的是,无论我是要实现第二个if语句的条件还是实现其否定[即!integer.equals(“ - ”)],程序仍然不会输入if .... / p>

谢谢,通常我的比较问题只是我遗漏了一些基本的东西,但我真的没有看到任何东西......

4 个答案:

答案 0 :(得分:3)

因为你在第一次抛出异常,所以,你的第二次甚至不会被测试。

if (!integer.equals("")){
    throw new NotIntException("Wrong data type-check fields where an integer"+
    " should be.");
}

if (integer.equals("-")){
    System.out.println(integer);
    throw new NotIntException("Error-Can't have a negative count.");
}

如果您的代码输入第一个if,则不会再执行。


但是,你为什么要用这种方法解决问题。

您可以轻松使用Integer.parseInt来检查有效integer。然后如果它是有效的,那么测试它是否less than 0。它会更容易和可读。

答案 1 :(得分:1)

我的解决方案:

public static boolean isPositiveInt(String str) {
    try {
       int number = Integer.parseInt(str.trim());
       return number >= 0;
    } catch (NumberFormatException e) {
       return false;
    }
}

答案 2 :(得分:0)

如果你想简单地从String读取一个int,请使用Integer.parseInt(),尽管只有当你想看一个字符串“is”是一个int而不是一个int时才能使用它。

您可以使用Integer.parseInt()和循环策略的组合来查看它是否相当容易包含int,然后只检查它是否为正。

答案 3 :(得分:0)

你的方法过于复杂。我会保持简单:

if (integer.startsWith("-")) {
    // it's a negative number
}

if (!integer.matches("^\\d+$")) {
    // it's not all-numbers
}

忘记拨打replaceAll()