[Java] Constructors

Pagina: 1
Acties:

  • J.Hollemans
  • Registratie: September 2001
  • Laatst online: 03-10-2025
Ik heb het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Node
{
 int value;
 Node nextNode

 public void Node()
 {
  value = 0;
  nextNode = null;
 }

 public void Node(int i)
 {
  value = i;
  nextNode = null;
 }
}

en ik heb een linked list, die de eerste node uit een reeks bijhoudt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class LinkedList
{
 Node firstNode;

 public void LinkedList()
 {
  firstNode = null;
 }

 public void LinkedList(Node n)
 {
  firstNode = n;
 }
}

Wanneer ik in een testprogje de volgende code aanroep:
code:
1
2
 Node myNode = new Node(5);
 LinkedList myLinkedList = LinkedList(myNode);

gaat het fout en krijg ik de melding:
code:
1
2
3
4
5
Wrong number of arguments in constructor.
 Node myNode = new Node(5);
           ^
 LinkedList myLinkedList = new LinkedList(myNode);
                   ^

maar dit zou zo toch moeten kunnen ?

als het moet is het volgende toch ook mogelijk ?:
code:
1
LinkedList myLinkedList = new LinkedList (new Node(5,new Node(4,new Node(3,new Node(2, new Node(1))))));

het is omslachtig, maar het is alleen om mijn toString methode te testen :9

Far from being some stuffy science, writing regular expressions is closer to an art.


Verwijderd

Node nextNode
Moet een ; achter.

Maar nu je eigenlijke probleem:

een constructor moet NOOIT void voor!!!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

code:
1
2
 Node myNode = new Node(5);
 LinkedList myLinkedList = LinkedList(myNode);

Klopt helemaal :) , Je moet ook dit doen:
code:
1
2
 Node myNode = new Node(5);
 LinkedList myLinkedList = new LinkedList(myNode);

Owjah... een constructor heeft geen return type :) Dus hij accepteert jouw definities niet als constructor en maakt de default constructor. Die heeft geen parameters en dus krijg je die error :)

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Nog een reactie... dit keer de hele code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class Node
{
    int value;
    Node nextNode;

    public Node()
    {
      value = 0;
      nextNode = null;
    }

    public Node(int i)
    {
      value = i;
      nextNode = null;
    }
}

class LinkedList
{
    Node firstNode;

    public LinkedList()
    {
      firstNode = null;
    }

    public LinkedList(Node n)
    {
      firstNode = n;
    }
}

class Test {
    public static void main(String[] args) {
      Node myNode = new Node(5);
      LinkedList myLinkedList = new LinkedList(myNode);
    }
}

Dit in een bestandje Test.java en dan compilen en draaien. Dit werkt wel...

  • Stephan Oudmaijer
  • Registratie: Oktober 2000
  • Laatst online: 16-08-2023
omg lees je boek wat een n00b fouten.. constructor met void :)

probeer ook de output van de compiler te lezen:

Wrong number of arguments in constructor

komt er dus op neer dat de compiler geen constructor kan vinden met het aantal argumenten dat je meegeeft.. ga dan dus zoeken wat er mis is met je constructor of je aanroep. Zo kom je al een heel eind meestal.

  • J.Hollemans
  • Registratie: September 2001
  • Laatst online: 03-10-2025
Bedankt,
en wat betreft die vergeten ; en new
ik heb het direct in tweakers ingetyped en niet met
CTRL C, CTRL V gedaan, sorry :)
gimli:
een constructor moet NOOIT void voor!!!
waarom niet ? is daar nog een reden voor ?

ps. ik ben totally new met Java, dus misschien is dit wel een hele stomme vraag |:( ;)

Far from being some stuffy science, writing regular expressions is closer to an art.


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Op vrijdag 02 november 2001 17:31 schreef JeroenHollemans het volgende:
waarom niet ? is daar nog een reden voor ?

ps. ik ben totally new met Java, dus misschien is dit wel een hele stomme vraag |:( ;)
Omdat het een constructor is, constructors hebben geen return type, niet eens 'void' gewoon GEEN return type.

En ja, da's best wel een stomme vraag, Java 101 >:)

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • J.Hollemans
  • Registratie: September 2001
  • Laatst online: 03-10-2025
Gerco:
Java 101 >:)
wat is Java 101 now weer :?

Far from being some stuffy science, writing regular expressions is closer to an art.


Verwijderd

En ja, da's best wel een stomme vraag, Java 101
Je zou toch beter moeten weten, als "Professional Newbie". D'r zijn echt geen stomme vragen, soms zie je gewoon wat over het hoofd.

Object myObject = new Object

Hier wordt een method "new" uitgevoerd met als argument de klasse waarvan het object gemaakt moet worden. Een constructor is een method die wordt uitgevoerd als een object geinitializeerd wordt, dus die hoeft geen return type te hebben. De functie new heeft namelijk al een return type (om het zo maar te zeggen :) het klopt niet helemaal, maar zo snapt iedereen het wel...)

EDIT: /-je vergeten

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Op vrijdag 02 november 2001 17:44 schreef GiMLi het volgende:
Je zou toch beter moeten weten, als "Professional Newbie". D'r zijn echt geen stomme vragen, soms zie je gewoon wat over het hoofd.
Zoiets? Je kunt inderdaad 'void' erbij zetten zonder dat je het door hebt, geen probleem. Maar om niet te weten dat 'void' er niet bijMAG is wat erger. Ik neem aan dat de topicstarter minimaal 1 Java tutorial of boekje gelezen heeft en zoiets MOET er wel instaan :)

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Op vrijdag 02 november 2001 17:42 schreef JeroenHollemans het volgende:
wat is Java 101 now weer :?
Amerikaanse uitdrukking voor: "Java, les 1"

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Ik heb het ook wel es per ongeluk erbij gezet, ook toen ik allang geen n00b meer was. Vergissen is menselijk hoor! En gelukkig zijn er altijd mensen die je op je vergissing kunnen wijzen zodat je er wat van leert :)

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Op vrijdag 02 november 2001 17:54 schreef GiMLi het volgende:
Ik heb het ook wel es per ongeluk erbij gezet, ook toen ik allang geen n00b meer was. Vergissen is menselijk hoor! En gelukkig zijn er altijd mensen die je op je vergissing kunnen wijzen zodat je er wat van leert :)
Ik ook, dat zeg ik toch ook? Erbij zetten ok, maar niet weten dat het er niet bij mag staan???

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!

Pagina: 1