我在Java中练习链表。所以,我制作了三个节点并给它们赋值1,2和3.当我运行代码时,我想要输出
1 2 3
但代码正在提供输出
333435
我检查了代码,看起来是正确的。我不知道为什么代码会产生意外的输出。任何人都可以帮助我。
提前致谢。
class LinkedList{
Node head;
static class Node
{
int data;
Node next;
Node(int d){
data = d;
next = null;
}
}
public void printList(){
Node n = head;
while (n != null){
System.out.print(n.data + ' ');
n = n.next;
}
}
public static void main(String[] args)
{
LinkedList llist = new LinkedList();
llist.head = new Node(1);
Node second= new Node(2);
Node third = new Node(3);
llist.head.next = second;
second.next = third;
llist.printList();
}
}
答案 0 :(得分:3)
您的代码是正确的,但您面临的问题在于
System.out.print(n.data + ' ');
代替
System.out.print(n.data + " ");
首先你应该知道: -
单引号用于字符,双引号用于字符串。
当你这样做时
n.data + ' '
它转换' '到它的ASCII值并将其添加到n.data。 空格的ASCII字符是32。因此,您的输出变为
1 +32 == 33
2 + 32 = 34
2 + 33 = 35
因此,
333435
并且没有空格,因为空间被转换为ASCII值 类似的类型代码将产生相同的输出。
例如: -
System.out.print(n.data +' *');
答案 1 :(得分:1)
在printList()方法中,您有:
// this converts the space char to an int and adds it the data.
System.out.print(n.data + ' ');
将其更改为:
// this will print the data and concatenate a space after it
System.out.print(n.data + " ");
注意:ascii中的空格字符是十进制的32,这就是你得到33,34和35的原因