比较字符串到整数,不工作?

时间:2014-03-20 23:29:48

标签: java

基本上我正在开发一个涉及矩阵的程序,我知道并且不能正确提供的矩阵可以是一个简单的数组,但这反驳了我在这里的目的。

无论如何,下面提供的代码提供了3种方法,每种方法都有一个代码,我试图比较这两个值,并且在每种情况下都失败了。如果有人能够指出错误,那就太棒了。

公共类TestingLength {

public static String[][] locatedNum = {{"1","2","3"}};

public static int num = 3;

public static void test() {

    System.out.println("Finding Number " + locatedNum[0][2] + " With Number " + num);

    if(locatedNum[0][2] == ""+num) {

        System.out.println("Example Worked!");

        return;
    }else
        System.out.println("Example Failed!");
}

public static void test2() {

    System.out.println("Finding Number " + locatedNum[0][2] + " With Number " + num);

    if(locatedNum[0][2].equals(num)) {

        System.out.println("Example Worked!");

        return;
    }else
        System.out.println("Example Failed!");

}

public static void test3() {

    String s = Integer.toString(num);

    System.out.println("Finding Number " + locatedNum[0][2] + " With Number " + num);

    if(locatedNum[0][2] == s) {

        System.out.println("Example Worked!");

        return;
    }else
        System.out.println("Example Failed!");

}

public static void main(String[] args) {
    test();
    test2();
    test3();
}

}

2 个答案:

答案 0 :(得分:2)

您的第一个示例有效,如果您更改

if(locatedNum[0][2] == ""+num) {

if(locatedNum[0][2].equals(""+num)) {

在这里,您要比较String s,String应始终使用.equals进行比较。否则,您正在比较String 指针,这些指针大部分时间都不相同。

如果您更改

,您的第二次测试有效
if(locatedNum[0][2].equals(num)) {

if(Integer.parseInt(locatedNum[0][2]) == num) {

在这种情况下,您要比较整数值,==是一个有效的选择。但是,您必须将String值从locatedNum转换为整数值。

如果您更改

,您的第三次测试有效
 if(locatedNum[0][2] == s) {

 if(locatedNum[0][2].equals(s) {

如果您要比较字符串,请始终使用.equals代替==

答案 1 :(得分:0)

您的第一个示例使用==来比较两个不是同一个对象的字符串。 (==说"你是同一个对象。)它可以和.equals一起使用。

你的第二个是陌生人,将字符串直接与int进行比较,而不使用之前用于转换为字符串的"" + num转换

你的第三个人有同样的问题。