[英]unable to cast String to a doubly linked list node
我在將String強制轉換為我的方法之一方面遇到異常錯誤。 我正在使用無法將Singly鏈表節點轉換為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);
}
或者您也可以將對象類型轉換為T,在這種情況下為String
public T dequeue() { //remove from top of queue
Object result = (list.get(0));
list.remove(0);
return (T)result;
}
您可以簡單地做到這一點:
String s = (String) test.dequeue();
在您的示例中,它是String
因此我們轉換了一個String
,但是假設它是一個Integer
,可以使用:
Integer i = (Integer) test.dequeue();
但是最好按照@justnisar指出的方式進行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.