2016-06-22 10 views
1

私はJavaでリンクリストを実践していました。だから、私は、3つのノードを作り、私は出力印刷が間違った出力をJavaで生成する

1 2 3 

をしたいが、コードが出力

333435 

私は、コードをチェックしを与えている私は、コードを実行すると、それらは、1,2および3に価値を与えましたそれは正しいようです。なぜコードが予期せぬ結果を出すのか分かりません。誰でも助けてくれますか?

ありがとうございます。あなたがprintlist()メソッドで

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(); 
    } 
} 
+1

Do System.out.print(n.data + ""); System.out.print(n.data + '')の代わりに。 –

答えて

3

あなたのコードは正しいですが、pあなたは

System.out.print(n.data + ' '); 

内嘘に直面しているroblem代わりにあなたが知っておくべき

System.out.print(n.data + " ");

まず操作を行います。 -

単一引用符は文字に使用されており、二重引用符は文字列のために使用されています。あなたは

n.data + ' ' 

を行うと

それは、そのASCII値に '' 変換しn.dataに追加します。空間の ASCII文字が32.Soである、あなたの出力は、したがって

1 +32 == 33

2 + 32 = 34

2 + 33 = 35

なります

スペースがASCII値に変換されるため、スペースはありません 同様のタイプコードが発生します同じ出力を出力します。

例: -

System.out.print(n.data + '*');

+0

私の一日を作ってくれてありがとう。私はあなたのポストからまったく新しいものを学びました。 – shahrukh

1

、あなたが持っている:

// 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のスペースの文字は10進数で32と、このですあなたが33,34、および35を手に入れた理由です

関連する問題