Java 需要检查ArrayList中的最后一个数字是否在ArrayList的其他部分重复

Java 需要检查ArrayList中的最后一个数字是否在ArrayList的其他部分重复,java,for-loop,arraylist,java.util.scanner,Java,For Loop,Arraylist,Java.util.scanner,标题描述了我正在尝试做的事情 代码没有任何错误,但它不会在正确的时间输出true/false。例如,对于输入 五, 1. 2. 3. 4. 5. 完成 输出将为false,这是不正确的,因为您可以看到5出现在ArrayList的末尾和另一个位置。所以,是的,我需要一些帮助去窃听,我感谢你的帮助 import java.util.ArrayList; import java.util.Scanner; public class LastRunner { public static vo

标题描述了我正在尝试做的事情

代码没有任何错误,但它不会在正确的时间输出true/false。例如,对于输入

五, 1. 2. 3. 4. 5. 完成

输出将为false,这是不正确的,因为您可以看到5出现在ArrayList的末尾和另一个位置。所以,是的,我需要一些帮助去窃听,我感谢你的帮助

import java.util.ArrayList;
import java.util.Scanner;

public class LastRunner {

    public static void main (String[] args) 
    {
        Scanner s = new Scanner(System.in);
        
        ArrayList<Integer> list = new ArrayList<>();
        
        System.out.println("Enter some numbers. When done, type \"done\"");
        
        while (s.hasNextInt()) 
        {
            list.add(s.nextInt());
        }
        
        int size = list.size();
        boolean lastChecker = false;
        
        for(int i = 0; i < size-1; i++)
        {
            if (list.get(size-1) == list.get(i))
            {
                lastChecker = true;
            }
        } 
        
        System.out.println(lastChecker);
    }
}
import java.util.ArrayList;
导入java.util.Scanner;
公开课最后一名选手{
公共静态void main(字符串[]args)
{
扫描仪s=新的扫描仪(System.in);
ArrayList=新建ArrayList();
System.out.println(“输入一些数字。完成后,键入\“完成”);
而(s.hasnetint())
{
添加(s.nextInt());
}
int size=list.size();
布尔lastChecker=false;
对于(int i=0;i
您的程序对您问题中的输入有效是合理的。(正如在一篇评论中所指出的,我实际上还没有尝试过,但我能理解为什么它会起作用。)

但是,您的程序中肯定有一个bug。我发现的问题是:

     if (list.get(size-1) == list.get(i)) 
问题是
list.get
将返回一个
Integer
对象。但是,当您使用
=
来比较两个
Integer
对象时,实际上是在比较两个对象引用

使用
=
比较两个
整数
值只在部分时间有效。这将取决于这些值以及它们是如何创建的

写上一行的正确方法是:

    if (list.get(size-1).equals(list.get(i)))
(注意:如果你成功地在列表中获得了一个
null
,上面的可能会给你一个NPE。但是,我不建议你测试
null
。列表中的
null
将表明在构建列表的代码中有一个bug。因此最好让NPE发生……这样程序员就会得到一个bug。)报告,或者别的什么。)



有关为什么
Integer==Integer
不正确(以及为什么它有时工作)的更详细解释,请参阅dup链接:。

根据您提供的输入,代码工作正常,它本身返回true。请再次检查