2016-08-05 4 views
1

夏にJavaのデータ構造に関する本を読むと、リンクされたリストの基本とノード付きのリンクリストを作成するのに苦労しています。作成しているノードとリンクリストを参照しない機能

特に、ソートされていない整数のファイルを関数に渡し、ソートして並べ替えられたリンクリストを出力する方法を理解しようとしています。私はおそらくこれよりも複雑なものにしていることは知っていますが、これらのノードがどのようにリンクされているのか、そしてそれらを返す方法を理解できていません。

リストオブジェクトを作成して最初のノードへの参照として使用すると、リストの末尾まで先行するノードを参照することになります。これはnullで表されます。これは私が本から続行しようとしている論理ですが、何かがクリックされていません。

mainで呼び出すと、私のreadFileメソッドが定義されていないというエラーが発生します。そんなことがあるものか?

import java.util.Scanner; 
import java.util.List; 

public class Node { 
    int value; 
    Node next; 

    /** 
    * Constructor 
    * @param value The element to store in this node, an integer from file 
    */ 
    public Node(int value) { 
     this.value = value; 
     next = null; 
    } 

    public static Node first; 
    public static Node last; 

    public void linkedList() { 
     first = null; 
     last = null; 
    } 

    /** 
    * function sorts integers 
    * @param inputFile file of integers from user 
    * @return linked list of sorted integers 
    */ 
    public static Node readFile(Scanner inputFile) { 

     while (inputFile.hasNext()) { 
      int data = inputFile.nextInt(); 
      if (first == null) { 
       first = new Node(data); 
       last = first; 
      } 
      if (data < first.value) { 
       first.next = first; 
       first = new Node(data); 
      } 
      if (data > first.value) { 
       last.next = new Node(data); 
       last = last.next; 
      } 
     } 
     return first; 
    } 

    /** 
    * function prints linked list 
    */ 
    public void print() { 
     Node ref = first; 

     while (ref != null) { 
      System.out.println(ref.value + " "); 
      ref = ref.next; 
     } 
    } 
} 

これが私のメインドライバです:クラスlistTestingで

import java.util.Scanner; 
    import java.util.List; 
    import java.io.*; 

    public class listTesting { 
    private static final String FILENAME = "numbers.txt"; 

    public static void main(String[] args) throws IOException { 

     Scanner keyboard = new Scanner(System.in); 

     System.out.print("Opening " + FILENAME); 
     File file = new File(FILENAME); 
     Scanner inputfile = new Scanner(file); 

     linkedList list = new linkedList(); 

     // error here stating this method is undefined ?? 
     list = readFile(inputfile); 

     System.out.println("\nThe sorted linked list: "); 
     list.print(); 
    } 
} 
+0

あなたの質問や問題が何であるかは不明です。 – shmosel

+0

ドライバのメインメソッドでreadFileを呼び出すとエラーが発生します。私の意図は、ソートされたノードのリストをリストに戻し、次にリストをプリントすることです。 EclipseのreadFileメソッドは定義されていません。 – pootduke9000

+0

'readFile'は、' listTesting'ではなく 'Node'に対して定義されています。 'Node.readFile(inputfile)'を呼び出すことを試みてください – garnulf

答えて

0

が無いNodeクラスへのリンクです。この行のために

list = readFile(inputfile); 

コンパイラはlistTestingクラスの静的メソッドを見つけようとします。私にとっては明確ではありません

次の項目:

linkedList list = new linkedList(); 

// error here stating this method is undefined ?? 
list = readFile(inputfile); 

デフォルトコンストラクタでリストの変数を作成したが、直後のReadFileメソッドからの結果でそれを変更しています。また、Nodeクラスでは、readFileはNodeクラス(linkedListではなく)を返します。

あなたはJavaの最初のところにいるので、Javaの本をもっと慎重に読んでください(データ構造の前にJavaの基本を繰り返してみてください)。

関連する問題