gpt4 book ai didi

java - 无法将 String 转换为双向链表节点

转载 作者:行者123 更新时间:2023-12-02 01:54:58 25 4
gpt4 key购买 nike

我在将字符串转换为我的方法之一时遇到异常错误。我正在使用 Singly linked list node not able to be cast as Integer作为引用,但我似乎无法找出问题所在。我的主要方法是由教授提供的,我必须运行它并测试我的方法。错误发生在 String s = test.dequeue();

public static void testQueue() {
System.out.println("Test queues");
Queue<String> test = new Queue<String>();
test.enqueue("a");
test.enqueue("b");
System.out.println(test);
test.enqueue("c");
test.enqueue("d");
test.enqueue("e");
test.enqueue("f");
System.out.println(test);
String s = test.dequeue();
System.out.println("dequeued " + s + ": " + test);
test.enqueue("x");
test.enqueue("y");
test.enqueue("z");
System.out.println(test);
try {
for (int i = 0; i < 10; i++) {
s = test.dequeue();
System.out.println("dequeued " + s + ": " + test);
}
}
catch(QueueException ex) {
System.out.println("EXCEPTION: " + ex);
}
test.enqueue("j");
test.enqueue("k");
test.enqueue("l");
System.out.println("Final value: " + test);
}

// Test Stacks
public static void testStack() {

System.out.println("Test stacks");
Stack<String> test = new Stack<String>();
test.push("a");
test.push("b");
System.out.println(test);
test.push("c");
test.push("d");
test.push("e");
test.push("f");
System.out.println(test);
String s = test.pop();
System.out.println("popped " + s + ": " + test);
test.push("x");
test.push("y");
test.push("z");
System.out.println(test);
try{
for (int i = 0; i < 10; i++) {
s = test.pop();
System.out.println("popped " + s + ": " + test);
}
}
catch(StackException ex) {
System.out.println("EXCEPTION: " + ex);
}
test.push("j");
test.push("k");
test.push("l");
System.out.println("Final value: " + test);


}

public static void main(String[] args) {

testQueue();
testStack();
}

队列方法也在下面。我使用 LinkedList 方法来调用我的函数。

public class Queue<T> implements QueueInterface<T> {
LinkedList list;
public Queue(){ //constructor
list = new LinkedList();
}

public void enqueue(T data) { //add to the bottom of queue
list.add(data, list.size);
}


public T dequeue() { //remove from top of queue
Object result = (list.get(0));
list.remove(0);
return (T)result;
}


public int size() { //get the size of queue
list.size();
return 0;
}


public T peek() { //get the data on the top of queue
list.get(0);
return null;
}
public String toString() {
return list.toString();
}
}

最佳答案

在 dequeue() 方法中,您返回的是 Object 类型,但您应该返回“T”类型。您可以将代码修改为以下内容。

public T dequeue() { //remove from top of queue
return list.get(0);
}

或者您也可以将 Object 类型转换为 T,在本例中为 String

 public T dequeue() { //remove from top of queue
Object result = (list.get(0));
list.remove(0);
return (T)result;
}

关于java - 无法将 String 转换为双向链表节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52434750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com