【问题标题】:Java List Nodes Can't Find Index Of Added ItemsJava 列表节点找不到已添加项目的索引
【发布时间】:2012-04-12 13:44:11
【问题描述】:

我刚刚学习 Java,并在 Java 中创建了自己的 Word List 和 Word Node 类。但是,我发现我的 WordList Index Of 方法总是返回 -1。有人可以告诉我它有什么问题吗?它与使用扫描仪有关吗? (我的教科书说这不是我的添加方法)。我的代码如下(每​​个类都在自己的文件中):

WordNode.java:

public class WordNode {

private String value;
private WordNode next;

public WordNode(String newValue) {
    value = newValue;
    next = null;
}

public WordNode(String newValue, WordNode nextNode) {
    value = newValue;
    next = nextNode;
}

public String getValue() {
    return value;
}

public WordNode getNextNode() {
    return next;
}

public void setNextNode(WordNode node) {
    next = node;
}}

WordList.java:

public class WordList {
private WordNode first;

public WordList(String firstNode) {
    first = new WordNode(firstNode);
}

public void add(String newValue) {
    first = new WordNode(newValue, first);
}

public void remove(String oldValue) {
    if (first.getValue() == oldValue) {
        first = first.getNextNode();
        return;
    }
    WordNode temp = first;
    while (temp != null && temp.getNextNode().getValue() != oldValue)
        temp = temp.getNextNode();
    if (temp != null)
        temp.setNextNode(temp.getNextNode().getNextNode());
}

public void moveToStart(String toMove) {
    remove(toMove);
    add(toMove);
}

public int indexOf(String item) {
    WordNode temp = first;
    int i = 1;
    while (temp != null && temp.getValue() != item) {
        temp = temp.getNextNode();
        i++;
    }
    if (temp == null)
        return -1;
    else
        return i;
}

public String itemAtIndex(int index) {
    WordNode temp = first;
    int i = 1;
    while (temp != null && i != index) {
        temp = temp.getNextNode();
        i++;
    }
    if (i == index)
        return temp.getValue();
    else
        return "";
}}

MTFencoder.java:

import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.Scanner;

public class MTFencoder {

public static void main(String[] args) {
    try
    {
        Scanner scan = new Scanner(new FileReader(args[0]));
        WordList dictionary = new WordList(scan.next());

        while (scan.hasNext()) {
            String newWord = scan.next();
            int index = dictionary.indexOf(newWord);
            if (index == -1) {
                System.out.println("0 " + newWord);
                dictionary.add(newWord);
            }
            else {
                System.out.println(Integer.toString(index));
                dictionary.moveToStart(newWord);
            }
        }
    }
    catch (Exception ex) {
        System.out.println("An error occured while reading the file. Check that it exists and is valid.");
    }
}}

提前致谢。 丹尼尔

【问题讨论】:

    标签: java


    【解决方案1】:

    在 Java 中,要检查对象的相等性,包括字符串,您必须使用 .equals 方法。所以在 indexOf 和 remove 中,你必须使用 first.getValue().equals(oldValue) 或类似的。

    【讨论】:

    • 谢谢!当然;我检查的是引用而不是实际的字符串。
    猜你喜欢
    • 2012-09-26
    • 2021-08-09
    • 1970-01-01
    • 2014-10-19
    • 2023-03-19
    • 2010-09-15
    • 2023-04-09
    • 2012-11-08
    • 1970-01-01
    相关资源
    最近更新 更多