Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.
import java.util.LinkedList;

class LinkedListDemo {

	class Node {

		private int x;
		private int y;

		public Node(int x, int y) {
            this.x = x;
			this.y = y;
        }

		public Node Node(int i, int j) {
			// TODO Auto-generated method stub
			return null;
		}

	}

	public static void main(String args[]) {

		LinkedList<Node> ll = new LinkedList<Node>();

		Node n = new Node(0, 0);
		
		ll.add ( n.Node(0, 0));
		ll.add(new Node(0, 0));
		ll.add(new Node(0, 0));
		ll.add(new Node(0, 0));

	}
}

Που ειναι το προβλημα σε αυτον τον κωδικα;

Δημοσ.

μαλλν δν ειναι εκει το πρόβλημα (που λεει ο technology fan) αλλά δεν είναι κ το καλύτερο νομίζω να έχει μια μέθοδος το όνομα του δομητή...αλλαξέτο..βασικά γιατί κάνεις μια κλάση μέσα στην άλλη??

Δημοσ.

γιατι αν έχεις μόνο την node και καθόλου την LinkedListDemo δεν δουλεύει?? δοκιμασέτο κ αν δεν... περίμενε τους πιο έμπειρους να απαντήσουν

Δημοσ.

class LinkedListDemo
{
    static class Node
    {
         ..............
    }
    ...............
}

Κάθε κλάση που γράφουμε μέσα σε μία άλλη κλάση είναι nested. Υπάρχουν δύο ειδών nested κλάσεις.

Σαν class Node είναι non-static nested class (inner class), δηλαδή κάθε αντικείμενο τύπου Node σχετίζεται με αντικείμενο τύπου LinkedListDemo. Για αυτό δεν μπορούσες να δημιουργήσεις αντικείμενα τύπου Node. Ο κώδικας έπρεπε να είναι κάπως έτσι

 

    public static void main(String args[])
    {
        LinkedList<Node> ll = new LinkedList<Node>();
        LinkedListDemo l = new LinkedListDemo();
        ll.add (l.new Node(0,0));
    }
Σαν static class Node είναι static nested class, δηλαδή δεν χρειάζεσαι ένα αντικείμενο τύπου LinkedListDemo για να δημιουργήσεις αντικείμενα τύπου Node.
Δημοσ.

Η προσέγγισή σου είναι λανθασμένη. Θέλεις ουσιαστικά ένα Wrapper class το οποίο να κρατάει 2 τιμές με όνομα node. Δεν υπάρχει κανένας απολύτως λόγος να βρίσκεται nested σε μια κλάση LinkedListDemo η οποία μάλιστα είναι η test class σου.

 

Θα κάνεις απλά το εξής:

public class Node {

		private int x;
		private int y;

		public Node(int x, int y) {
                        this.x = x;
			this.y = y;
               }
               
               //public getters, setters

}

Σε άλλο αρχείο:

 public static void main(String args[])  {
        LinkedList<Node> ll = new LinkedList<Node>();
        ll.add (new Node(0,0));
 }

Θα μπορούσες ενδεχομένως να την έχεις ως outer class στο ίδιο αρχείο (δηλαδή class σκέτο), αλλά δεν είναι κάτι που συνηθίζεται. Το method Node κάντο με μικρά "node"..είναι απο τα βασικά Java conventions...to βλέπει κάποιος και νομίζει ότι προσπαθείς να φτιάξεις constructor. Αν και δεν καταλαβαίνω τη προσπαθείς να κάνεις με το return null;

Δημοσ.

χρειαζεσαι και ενα private node που θα "δειχνει" στο επομενο node (και το τελευταιο θα δειχνει null)


public class Node {

        private int x;
        private int y;
        private Node next;  // <-------------


        public Node(int x, int y) {

this.x = x;

            this.y = y;

}



//public getters, setters



}

Δημοσ.

 

χρειαζεσαι και ενα private node που θα "δειχνει" στο επομενο node (και το τελευταιο θα δειχνει null)


public class Node {

        private int x;
        private int y;
        private Node next;  // <-------------


        public Node(int x, int y) {

this.x = x;

            this.y = y;

}



//public getters, setters



}

Αν και δεν ξέρω από Java αλλα πιστευω κάνεις λάθος. Υπάρχει ήδη collections LinkedList<τύπος> απλά στο τύπος βάζεις την κλάση σου. Ο τρόπος που με το next χρησιμοποιήται στη c για να δείξει το επόμενο. Εκτός και αν κάνω κάπου λάθος :P

Δημοσ.

θελω να φτιαξω μια λιστα και κανοντας add να μπορω να εισαγω 2 στοιχεια

με την add() βαζεις παντα ενα στοιχειο, αν θες να βαλεις πολλα μαζι δες την addAll().

 

ΥΓ: Γιατι LinkedList κι οχι ArrayList ;

  • Like 1
Δημοσ.

Αν και δεν ξέρω από Java αλλα πιστευω κάνεις λάθος. Υπάρχει ήδη collections LinkedList<τύπος> απλά στο τύπος βάζεις την κλάση σου. Ο τρόπος που με το next χρησιμοποιήται στη c για να δείξει το επόμενο. Εκτός και αν κάνω κάπου λάθος :P

 

ωπα, μπερευτηκα, νομιζα εφτιαχνε δικη του linked list :P

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...