java中的ArrayList错误(无法将两个数字相等)

时间:2018-01-06 15:24:23

标签: java if-statement arraylist

这是一些代码

package deleteit;
import java.lang.*;
import java.io.*;
import java.util.*;

public class Deleteit {

public static void main(String[] args) throws IOException {

    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    ArrayList<Integer> arr1=new ArrayList<Integer>();
    arr1.add(100000);
    arr1.add(1);
    arr1.add(100000);
    arr1.remove(1);
    if(arr1.get(0)==arr1.get(1))
    {
        System.out.println("GUd");
    }
    else
       System.out.println("damnit");

}

}

现在应该打印Gud,因为100000等于100000,因为1从ArrayList中删除,所以它留下100000和100000。 那为什么要打印该死的?

这是一个BUG吗?

1 个答案:

答案 0 :(得分:2)

您必须使用4.294967296E9 5.25hr 而不是equals

以下是一些示例代码:

==

数字对象(import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; public class DeleteIt { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ArrayList<Integer> arr1 = new ArrayList<Integer>(); arr1.add(100000); arr1.add(1); arr1.add(100000); arr1.remove(1); if (arr1.get(0).equals(arr1.get(1))) { System.out.println("GUd"); } else System.out.println("damnit"); } } IntegerDouble)应始终与Short进行比较,而不是.equals。顺便说一句,这同样适用于==

如果您使用String,则表示您正在比较参考,而不是实际值。

顺便说一句,关于取消装箱并使用==标志。如果您对比较的第一个值应用==,则可以使用intValue()符号。所以这段代码也可以工作:

==

后一个代码似乎强制取消装箱,然后package stackoverflow; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; public class DeleteIt { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ArrayList<Integer> arr1 = new ArrayList<Integer>(); arr1.add(100000); arr1.add(1); arr1.add(100000); arr1.remove(1); if (arr1.get(0).intValue() == arr1.get(1)) { System.out.println("GUd"); } else System.out.println("damnit"); } } 不是比较参考,而是实际值。