2016-10-31 8 views
0

まず、ノードクラスをコンパイルしています。私はQueueArrayを成功させましたが、QueueLinked Listは行っていません。リンクされたリストでキューを実装する、私のNodeクラスに関連するエラーを取得する

キューLLをコンパイルしようとすると、NodeクラスのコンストラクタNodeが指定された型に適用できないというエラーが発生し続けます。 ノードnewNode =新しいノード(a);

しかし、私がそこに置いても、エラーが発生し続け、次のステップでエンキューを行うことは何もわかりません。任意のヒント?

public class Node{ 
 
\t private Node next; 
 
\t private String name; 
 
\t private int ssn; 
 
\t private int key; 
 

 
\t public Node(String name, int ssn){ 
 
\t \t this.name = name; 
 
\t \t this.ssn = ssn; 
 
\t } 
 

 
\t public void setNext(Node n){ 
 
\t \t this.next = n; 
 
\t } 
 

 
\t public int getSSN(){ 
 
\t \t return this.ssn; 
 
\t } 
 
\t 
 
\t public int getKey(){ 
 
\t \t return ssn%10000; 
 
\t } 
 
\t public String getName(){ 
 
\t \t return name; 
 
\t } 
 
\t 
 
\t public Node getNext(){ 
 
\t \t return this.next; 
 
\t } 
 

 
\t public void setSSN(int ssn){ 
 
\t \t this.ssn= ssn; 
 
\t } 
 
}

public class QueueLL{ 
 
\t private Node first; 
 
\t private Node last; 
 
\t private int n; 
 
\t private Node queue; 
 
\t 
 
\t public QueueLL(){ 
 
\t \t first = null; 
 
\t \t last = null; 
 
\t \t n = 0; 
 
\t } 
 
\t \t 
 
\t public boolean isEmpty(){ 
 
\t \t return first == null; 
 
\t } 
 
\t 
 
\t public Node front(){ 
 
\t \t return first; 
 
\t } 
 
\t \t 
 
\t public void enqueue(Node a){ 
 
\t \t Node newNode = new Node(a); 
 
\t \t if (first == null){ 
 
\t \t \t first = a; 
 
\t \t \t last = first; 
 
\t \t } 
 
\t \t else{ 
 
\t \t \t last = a.getNext(); 
 
\t \t \t last = a; 
 
\t } 
 
} 
 

 
\t public Node dequeue(){ 
 
\t \t if (first == null){ 
 
\t \t \t return null; 
 
\t \t } 
 
\t \t else{ 
 
\t \t \t Node temp = first; 
 
\t \t \t first = first.getNext(); 
 
\t \t \t return temp; 
 
\t \t } 
 
\t } 
 
\t // printQueue method for QueueLL 
 
    public void printQueue() { 
 
     System.out.println(n); 
 
     Node temp = first; 
 
     while (temp != null) { 
 
      System.out.println(temp.getKey()); 
 
      temp = temp.getNext(); 
 
     } 
 
    } 
 
}

+3

別 'Node'を受け入れるコンストラクタがありません。なぜあなたはそれがコンパイルされると思いますか? – shmosel

+2

''エラーが発生したまま、次のステップでエンキューを有効にすることができません。ヒント? " - すべての**エラーメッセージを表示して表示することを検討してください。彼らは一種の重要です。 –

+0

@HovercraftFullOfEelseこれは、私が 'QueueLL.java:22を取得する唯一のエラーです:クラスNodeのコンストラクタNodeは、与えられた型には適用できません。 \t \tノードnewNode =新しいノード(a); \t \t^ 必要:文字列、int型 が見つかりました:ノード 理由は:実際の正式引数リストは、私はまだJavaのに非常に新しいです ' –

答えて

1

あなたが存在doesntのコンストラクタを呼んでいます! Nodeクラスであなたが持っている唯一のコンストラクタは

public Node(String name, int ssn){ 
    this.name = name; 
    this.ssn = ssn; 
} 

あなたはこのラインでNode newNode = new Node(a.getName(), a.getSSN());

+0

ありがとう、これは私のコンパイルに役立ちましたが、私はテストを行うときに私のコードを正しく実行することができないようです。私のコードは1つのノードしか印刷しないので、私のエンキュー機能はまだ100%ではないと思います。私のエンキュー機能で何か別のものがあるかどうか? –

+0

答えに投票するのを忘れないでください!ここにあなたのメインを貼り付けることができますか?私はデバッグしようとするとエラーがどこに見えるが、私はあなたの設定ではないと思うnode.setNext – BrunoDM

0

QueueLLクラスは、この行があります:

Node newNode = new Node(a); 

それはNode(Node a)コンストラクタを呼び出すのが、 Nodeクラスにそのようなコンストラクタはありません。

あなたはへの呼び出しを変更することができます。

Node newNode = new Node(a.getName(), a.getSSH()); 

またはNodeクラスの新しいコンストラクタを追加します。

public Node(Node node){ 
    this.name = node.getName(); 
    this.ssn = node.getSSH(); 
} 
+0

私はコンパイルできますが、テストコードを実行してコードが正常に機能しているかどうかを確認するには、私がプリントアウトするのは6789です。これは1つのノードだけです。私は、新しいノードが実際には作成されていないところで、Enqueue関数内にエラーがあると思います。これはエンキューに適していますか? 'public void enqueue(Node a){ \t \tノードnewNode =新しいノード(a.getName()、a.getSSN()); \t \t if(first == null){ \t \t \t first = a; \t \t \t最後=最初;他 \t \t} \t \t { \t \t \t最後= a.getNext()。 \t \t \t last = a; \t} } –

0

にラインNode newNode = new Node(a);を変更する必要があるあなたは、コンストラクタを呼び出すことでNodeclassをインスタンス化するつもり

Node newNode = new Node(a); 

ました既に存在するNodeオブジェクトが必要です。そのようなコンストラクタがないので、エラーが発生します。それはnameためStringssnためintを期待

public Node(String name, int ssn){ 
    this.name = name; 
    this.ssn = ssn; 
} 

:これはあなたの唯一のコンストラクタです。

public Node(Node input) { this.setName(input.getName()); this.setSSN(input.getSSN()); this.setNext(input.getNext()); }

  • があなたの代わりに既に存在しないコンストラクタを呼び出す:

    1. あなたはNode互いにによって構築Nodeコンストラクタを作成します。その結果として、あなたは、少なくとも3つの可能な解決策を持っている

      Node newNode = new Node(a.getName(), a.getSSN());

    2. あなたはstaticファクトリメソッドの作成:

      public static Node createBy(Node input) { Node output = new Node(input.getName(), input.getSSN()); output.setNext(input.getNext()); return output; }

    をし、それを使用します。

    Node newNode = Node.createBy(a);

  • 関連する問題