2017-01-25 27 views
1

Javaプログラムを作成してリストを作成し、キーボードから値を入力してからこのリストの値を印刷しますが、1 3 5 7 9と入力すると出力は1になりますそれを実行するときに、3,5、7、9であり、あなたはそのJava:キーボードからリストを入力する

public class MergeTwoSortedList { 
    public static class ListNode{ 
     int value; 
     ListNode next; 
     public ListNode(int n){ 
      this.value = n; 
      this.next = null; 
     } 
    } 
    public static void main(String[] args){ 
     // input two integer lists 
     System.out.println("please input list1"); 
     Scanner in = new Scanner(System.in); 
     ListNode head = null; 
     if(in.hasNextInt()){ 
      head = new ListNode(in.nextInt()); 
     } 
     ListNode temp = head; 
     while(in.hasNextInt()){ 
      temp.next = new ListNode(in.nextInt()); 
      temp = temp.next; 
     } 

     in.close(); 
     ListNode list1 = head; 

     while(list1.next != null){ 

      System.out.print(list1.value + ","); 
      list1 = list1.next; 
     } 

     System.out.println(); 



    } 


} 

のために私を助けてください可能性があり、それが印刷:

7で
please input list1 
1 3 5 7 9; 
1,3,5, 

と9

+0

なぜ入力後に ';'を入力していますか? –

+0

ようこそスタックオーバーフロー!宿題の助けを求めているようです。それ自体に問題はありませんが、これらのことを守ってください(http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845)、それに応じて質問を編集してください。 –

+0

宿題ではありません。私はJavaを学ぶときに私が会った問題です。mohsen_fatemiへの – bin

答えて

1

でご入力例1 3 5 7 9;9;Stringと扱われますので、in.hasNextInt()と呼んでいるのでリストに追加されません。

1 3 5 7 9 ;

あなたのコードのもう一つの問題は、 while(list1.next != null)であなたの条件である:あなたがあなたの番号を入力完了した後、あなたの例では、正しい入力は次のようになりますので、あなたは、空白文字を書くことができ、この問題を解決するには ループ。 コードをステップごとに分析すると、list1が最後のノードになると、次のノードがあるかどうかを確認し、最後の値を印刷せずにループを終了します。 ソリューションは本当に簡単で、ただこれにあなたのwhile条件を変更:

while(list1 != null){ 
    System.out.print(list1.value + ","); 
    list1 = list1.next; 
} 

この方法であなたが最後の要素を印刷した後、ループを終了します。

+0

これは今、ありがとう – bin

+0

@bin問題ありません。助けがあればこの回答を受け入れてください。 – Patryk

関連する問題