当前位置: 首页 > 知识库问答 >
问题:

我不明白为什么我的通用代码不能工作[重复]

湛鸿
2023-03-14

下面是一个链表的简单实现。我刚刚添加了相关代码。首先,我向列表中添加一些值,10,990和10000。当我搜索相同的值时,对于key=10,我得到true,但是对于key=990和key=10000得到false,尽管它应该是true。另外,如果我将第二个值从990更改为99,并搜索key=99,这一次我得到的是true。

我不确定是否使用泛型类型。我想我在那里做错了什么。因为如果我用int替换泛型类型,我就得到了正确的行为。请建议。

    public class LinkedListTest {
        public static void main(String[] args) {
            LinkedList<Integer> num = new LinkedList<Integer>();
            num.add(10);            
            num.add(990);
            num.add(10000);
            int key = 10; 
            System.out.println("Key " + key + " found ?" + num.findValue(key));
            key = 990; //also checked for Integer key = 990
            System.out.println("Key " + key + " found ?" + num.findValue(key));
            key = 10000;
            System.out.println("Key " + key + " found ?" + num.findValue(key));
        }
    }

    class LinkedList<T>{
        private Node<T> first;
        private class Node<T>{
           private T data;
           private Node<T> next;

           public Node(T data){
               this.data = data;
               this.next = next;
           }
       }

    public void add(T data){
        Node<T> nn = new Node<T>(data);
        nn.next = first;
        first = nn;
    }

    public boolean findValue(T key){
        Node current = first;
        while(current != null){
            if(current.data == key)
                return true;
            else
                current = current.next;
        }
        return false;
    }
}

共有1个答案

萧亦
2023-03-14

==运算符比较两个对象引用,查看它们是否引用同一个对象。使用integer值,JVM将从-128127缓存integer

integer.valueofJavaDocs中:

此方法将始终缓存在-128到127(含)范围内的值,并可能缓存此范围之外的其他值。

if(current.data != null && current.data.equals(key))
 类似资料:
  • ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。 为什么会这样?因为我指定了在不满足任何条件的情况下分配给列的值。

  • 还不起作用。所以我放弃链接,我只是编码:

  • 尽管有值,但我不能得到一个用户的值的和时间。 即使用户17有工作时间值,我也会在sumTW列中得到该用户的NULL值。我该怎么解决? 这就是我的查询看起来的样子: 下面是表格代码: (这个表和原来的不一样,原来的有外键。我去掉它们只是为了能够再现同样的问题,同样的问题被报告了)。

  • 当用户键入以下内容的答案时:system.out.println(“键入数字”); 它不会继续到我的代码的下一部分。

  • 问题内容: 我正在尝试编写关于弹跳球的代码,但是我仍然沉迷于如何 使弹跳球。该代码似乎是正确的,日食没有错误消息 ,但是球还是没有动。任何帮助/提示表示赞赏。 这是我的代码: 问题答案: 基本上,什么都没有移动。 每次滴答作响,您要做的就是重新粉刷。 您需要将移动逻辑移至已注册的方法Timer 更像… 这样,每次Timer打勾时,您都在相应地更新球的位置… 更新了工作示例 我做了两个更改。我将设置

  • 我正在构建一个鼓机,我已经存储了一个带有kick声音的示例头文件,它的值介于0和170之间。我想通过SPI将其发送到10位MCP4811 DAC,然后将其输出到3.5毫米音频插孔。 我有我的MISO,MOSI,SCK和复位引脚连接到我的USB编程器以及DAC。 这里是存储在"samples. h"中的音频文件的片段。 因此,它是2221位的样本。我想用SPI发送到DAC,频率=22 kHz。 我使