在java中产生错误输出的打印

在java中产生错误输出的打印,java,performance,data-structures,linked-list,nodes,Java,Performance,Data Structures,Linked List,Nodes,我在用Java练习链表。我做了三个节点,给它们取1,2和3。当我运行代码时,我需要输出 1 2 3 但是代码给出了输出 333435 我检查了代码,它似乎是正确的。我不知道为什么代码会产生意外的输出。谁能帮帮我吗 提前谢谢 class LinkedList{ Node head; static class Node { int data; Node next; Node(int d){

我在用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();
    }
}
在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,这就是为什么在printList()方法中得到33、34和35

,您有:

// 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

您的代码是正确的,但您面临的问题在于

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值 类似的类型代码将产生相同的输出

例如:-


系统输出打印(n.data+'*')

您的代码是正确的,但您面临的问题在于

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值 类似的类型代码将产生相同的输出

例如:-


系统输出打印(n.data+'*')

Do System.out.print(n.data+“”);而不是系统输出打印(n.data+“”);Do System.out.print(n.data+“”);而不是系统输出打印(n.data+“”);谢谢你让我开心。我从你的帖子中学到了一个全新的东西。谢谢你让我开心。我从你的帖子中学到了一个全新的东西。