Java列表节点无法找到已添加项的索引

时间:2012-04-12 05:37:37

标签: java

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

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.");
    }
}}

提前致谢。 丹尼尔

1 个答案:

答案 0 :(得分:1)

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