- 此问题在此处已有答案**:
(23个答案)
2天前关闭。
我的CircList
类是一个字符串元素的循环双向链表。这个类有一个添加元素的方法叫做insertEnd()
,还有一个显示元素的方法叫做displayMatch()
。displayMatch()
方法是打印一个元素,如果这个元素等于"D"。
在public static void main()
方法中,如果我手动使用insertEnd()
向循环列表中添加字母,每次添加一个,则displayMatch()
会得到预期的输出("D")。
但是因为我想把整个字母表添加到循环列表中,所以我想使用一个循环来代替手动添加字母,但是当我使用insertEnd()
的循环来添加字母时,我没有得到displayMatch()
的预期输出("D),没有错误消息,但是控制台是空的,为什么?
谢谢你的帮助!
import java.util.*;
public class CircList {
static cNode head;
static cNode tail;
static class cNode {
String data;
cNode next;
cNode prev;
};
static void insertEnd(String value)
{
if (head == null) {
cNode newNode = new cNode();
newNode.data = value;
newNode.next = newNode;
newNode.prev = newNode;
head = newNode;
return;
}
cNode newNode = new cNode();
newNode.data = value;
tail = head.prev;
newNode.next = head;
head.prev = newNode;
newNode.prev = tail;
tail.next = newNode;
}
static void displayMatch()
{
cNode temp = head;
while (temp.next != head) {
if(temp.data == "D")
{
System.out.print(temp.data);
}
temp = temp.next;
}
}
public static void main(String[] args) {
// IF I MANUALLY USE insertEnd() TO ADD LETTERS TO THE CIRCULAR LIST,
// I GET THE EXPECTED OUTPUT ("D") WITH displayMatch().
insertEnd("A");
insertEnd("B");
insertEnd("C");
insertEnd("D");
insertEnd("E");
displayMatch();
// BUT IF I INSTEAD USE A FOR LOOP WITH insertEnd() TO ADD LETTERS TO THE CIRCULAR LIST,
// I DON'T GET THE EXPECTED OUTPUT ("D") WITH displayMatch(). I GET NO OUTPUT.
String alphabetString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
List<String> alphabetList= Arrays.asList(alphabetString.split(""));
int alphabetListSize = alphabetList.size();
for(int i = 0 ;i < alphabetListSize ;i++)
{
String letter = alphabetList.get(i);
insertEnd(letter);
}
displayMatch();
}
}
1条答案
按热度按时间kmbjn2e31#
您需要将
temp.data == "D"
替换为temp.data.equals("D")
。这是因为
==
比较引用,并且split
创建String
的新示例。