[java] unexpected type

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Goede middag, ik zit weer met een java vraag...

In het project dat we moeten maken moet een lijst met Ingenieurs objecten gesorteerd worden op basis van hun score. Hiervoor maak ik gebruik van het heapsortAlgoritme dat wat aangepast is zodat ik een ArrayList Ingenieursobjecten return ipv een int Array zoals in een standaard heapSort algoritme. Ik denk dat het zou moeten werken als ik volgende error niet kreeg:
"unexpected type"

dat krijg ik op volgend stukje code:
Java:
1
engineerList.get(loc1) = engineerList.get(loc2);


waarbij loc1 en loc2 integers zijn. De fout zit em dus dat hij blijkbaar geen ingenieursObject kan gelijk stellen aan een ander ingenieursObject oid. Ik probeerde dan maar:
Java:
1
engineerList.get(loc1) =(Engineer) engineerList.get(loc2);


maar dezelfde error kwam terug.

Kent er iemand een workaround hiervoor? ik kan het ook op een andere manier doen door gebruik te maken van unieke ID's die elke ingenieur heeft, maar dat wordt wel een beetje omslachtig

bij voorbaat dank :)

Acties:
  • 0 Henk 'm!

  • Face_-_LeSS
  • Registratie: September 2004
  • Niet online
Wat je nu probeert gaat niet lukken natuurlijk. Zie documentatie van de ArrayList klasse.

Wat jij wilt is het volgende denk ik:

Java:
1
engineerList.set(engineerList.indexOf(loc1), engineerList.get(loc2));

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Face_-_LeSS schreef op vrijdag 01 mei 2009 @ 11:39:
Wat je nu probeert gaat niet lukken natuurlijk. Zie documentatie van de ArrayList klasse.

Wat jij wilt is het volgende denk ik:

Java:
1
engineerList.set(engineerList.indexOf(loc1), engineerList.get(loc2));
natuurlijk _/-\o_

8)7

had ik moeten weten, maar zeer hartelijk dank :)

offtopic:
moet in het vervolg maar eens uitslapen

[ Voor 5% gewijzigd door Verwijderd op 01-05-2009 11:45 ]


Acties:
  • 0 Henk 'm!

  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 18-09 22:40

Nick_S

++?????++ Out of Cheese Error

Hiervoor maak ik gebruik van het heapsortAlgoritme
Ik zou eens kijken naar Collections.sort ipv. je eigen sort algoritme schrijven.

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nick_S schreef op vrijdag 01 mei 2009 @ 11:42:
[...]


Ik zou eens kijken naar Collections.sort ipv. je eigen sort algoritme schrijven.
mag niet voor onze opdracht :) we mogen enkel dingen gebruiken die we in de les gezien hebben. Enige afwijking mag wel, maar we zijn 5 lessen oid met sorteeralgoritmen bezig geweest ;)

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:47

Creepy

Tactical Espionage Splatterer

Is het niet handiger om direct de Collections.sort() te gebruiken en een eigen Comperator class te maken? Hoef je zelf geen code te schrijven voor het daadwerkelijke sorteren en verwisselen van objecten in je list.
Verwijderd schreef op vrijdag 01 mei 2009 @ 11:44:
[...]


mag niet voor onze opdracht :) we mogen enkel dingen gebruiken die we in de les gezien hebben. Enige afwijking mag wel, maar we zijn 5 lessen oid met sorteeralgoritmen bezig geweest ;)
-O-

Maar wel goed voor je algemene kennis van sorteer algoritmes :Y)

[ Voor 47% gewijzigd door Creepy op 01-05-2009 11:46 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • FireDrunk
  • Registratie: November 2002
  • Laatst online: 20-09 11:06
Wikipedia: Sorting algorithm

Is een goede bron om meer te leren, kijk ook goed bij de externe links die wikipedia zelf opgeeft.
Daar staat ook veel nuttigs in...

Even niets...


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Creepy schreef op vrijdag 01 mei 2009 @ 11:45:
-O-

Maar wel goed voor je algemene kennis van sorteer algoritmes :Y)
Hoezo -O- ?

Bij informatica opleidingen leer je HOE verschilende algorithmen werken. Dat betekent dus dat je bijvoorbeeld zelf een implementatie van een dergelijk algorithme moet maken. Wij hebben bijvoorbeeld ook zelf een huffman of LZW (mochten zelf kiezen, LZW is iets complexer) gemaakt.
thijs_cramer schreef op vrijdag 01 mei 2009 @ 11:57:
Wikipedia: Sorting algorithm

Is een goede bron om meer te leren, kijk ook goed bij de externe links die wikipedia zelf opgeeft.
Daar staat ook veel nuttigs in...
Heb je de vraag wel gelezen?

[ Voor 28% gewijzigd door Hydra op 01-05-2009 11:58 ]

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:47

Creepy

Tactical Espionage Splatterer

Omdat ze het niet mogen gebruiken
Bij informatica opleidingen leer je HOE verschilende algorithmen werken. Dat betekent dus dat je bijvoorbeeld zelf een implementatie van een dergelijk algorithme moet maken. Wij hebben bijvoorbeeld ook zelf een huffman of LZW (mochten zelf kiezen, LZW is iets complexer) gemaakt.
[...]
Waarom denk je dat er nog een stuk tekst in mijn post staat na de smiley? ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Creepy schreef op vrijdag 01 mei 2009 @ 12:22:
[...]

Omdat ze het niet mogen gebruiken

[...]

Waarom denk je dat er nog een stuk tekst in mijn post staat na de smiley? ;)
Ja, maar dit lijkt me dan toch meteen duidelijk? Ik snap niet dat je verbaasd bent dat je om een algoritme te leren de leerstof niet mag bypassen. Toen we met arrays aan de slag gingen (helemaal aan het begin) mocht je ook geen collections gebruiken.

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:47

Creepy

Tactical Espionage Splatterer

offtopic:
Als je er meer over kwijt wilt dan liever direct naar mij of ergens anders maar niet hier want het is totaal offtopic. Ik ben er niet over verbaasd, je interpreteert die smiley verkeerd.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
even nog een mini vraag:

bij onze opgave staat dit:
In dit practicum maak je gebruik van de standaard JDK-klassen die bij de java
compiler geleverd worden, de klassen die door ons gegeven worden (sectie 3)
en natuurlijk de zelf geschreven klassen. Het gebruik van andere klassen
en/of packages is niet toegelaten.
nu weet ik niet precies wat er allemaal behoort tot de standaard jdk klassen. Ik neem aan dat dit wel heel wat is en dat je toch wel 'import java.*' kunt gebruiken?

ik moet namelijk ook een timer implementeren en google zegt dat er blijkbaar wel het een en ander daarvoor bestaat. Hiervoor zal ik ook wel het 1 en ander moeten importeren.

via google vind ik precies nog al een verscheidenheid aan jdk packs die je kan downloaden, vandaar dat ik niet goed in zie wat standaard is. Volgens bluej gebruik ik jdk1.5.0_06. wat blijkbaar wel veroudert is?
Kortom ik geraak er zo 1 2 3 niet uit... :9

bedankt :)

Acties:
  • 0 Henk 'm!

  • momania
  • Registratie: Mei 2000
  • Laatst online: 22:26

momania

iPhone 30! Bam!

via google kom ik met de eerste hit op een standaard timer class die gewoon in de jdk zit ;)
[google=java,timer]

Neem je whisky mee, is het te weinig... *zucht*


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
momania schreef op zaterdag 02 mei 2009 @ 10:50:
via google kom ik met de eerste hit op een standaard timer class die gewoon in de jdk zit ;)
[google=java,timer]
jaja, die link heb ik ook al gevonden hoor, maar hoe weet je nu dat dat standaard is? :) Het lijkt me heel logisch en standaard zal wel heel veel inhouden, maar omdat we volgens mij nog maar 1% van java hebben gezien (volgens mij is het niet mogelijk om het uberhaut helemaal te kennen?) wist ik dus niet in hoeverre we standaard jdk gezien hebben. Vandaar dat ik dus dacht dat die timer eventueel niet tot de standaard klassen behoorde :) . (die timer zal ik wss niet gaan gebruiken aangezien die niet in reele tijd verloopt).

goed, ik hoef me dus geen zorgen te maken dat ik dingen buiten de jdk ga gebruiken, kan ik weer verder :)

Acties:
  • 0 Henk 'm!

  • momania
  • Registratie: Mei 2000
  • Laatst online: 22:26

momania

iPhone 30! Bam!

Verwijderd schreef op zaterdag 02 mei 2009 @ 10:57:
[...]
jaja, die link heb ik ook al gevonden hoor, maar hoe weet je nu dat dat standaard is? :)
Kijk eens in de rt.jar (vind je ergens in de installatie directory van je jdk). Dat is zo'n beetje alles wat standaard in de jdk zit aan classes :Y)

Neem je whisky mee, is het te weinig... *zucht*


Acties:
  • 0 Henk 'm!

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
momania schreef op zaterdag 02 mei 2009 @ 11:00:
[...]

Kijk eens in de rt.jar (vind je ergens in de installatie directory van je jdk). Dat is zo'n beetje alles wat standaard in de jdk zit aan classes :Y)
De API docs lijkt mij wat overzichtelijker, daar worden alle standaard Java classes in beschreven.

Acties:
  • 0 Henk 'm!

  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 18-09 22:40

Nick_S

++?????++ Out of Cheese Error

De Java 5 API is je vriend. :) Het is wel iets meer als import java.* (doe dat maar niet, gewoon importeren wat je nodig hebt).
volgens mij is het niet mogelijk om het uberhaut helemaal te kennen?
Daarom heb je ook een API, die is opgedeeld in verschillende onderwerpen (Collections, Concurrency, GUI, etc). Als je maar een beetje weet wat elk onderwerp doet en daar eens een tutorial of een boek over leest, weet je heel snel wat er in de API zit en hoe je het moet gebruiken. De precieze details, daar heb je dan weer de API voor.

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


Acties:
  • 0 Henk 'm!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 18-09 16:32
Nick_S schreef op zaterdag 02 mei 2009 @ 12:23:
De Java 5 API is je vriend. :) Het is wel iets meer als import java.* (doe dat maar niet, gewoon importeren wat je nodig hebt).


[...]

Daarom heb je ook een API, die is opgedeeld in verschillende onderwerpen (Collections, Concurrency, GUI, etc). Als je maar een beetje weet wat elk onderwerp doet en daar eens een tutorial of een boek over leest, weet je heel snel wat er in de API zit en hoe je het moet gebruiken. De precieze details, daar heb je dan weer de API voor.
Waarom niet de Java 6 API?
http://java.sun.com/javase/6/docs/api/

Een nieuwe JDK installeren is ook niet zoveel werk.

[ Voor 3% gewijzigd door Enfer op 03-05-2009 14:06 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
voor deze vraag is niet echt een nieuw topic nodig denk ik.
Voor sommige (de meeste) onder jullie zal deze vraag wel vrij n**b zijn, maar ik stel hem toch even (hoop dat ik hem duidelijk stel):

in mijn klasse Gui heb ik in de constructor: timer = new Timer();
Het Timer object houd de tijd e.d. bij (mbv een GregorianCalendar). In de klasse Timer zijn er methodes in de aard van updateSomething(ArrayList<object> list);
Als ik in Gui dan het volgende uitvoer:
timer.updateSomething(admin.getLijst());
dan wordt de lijst verkregen door admin.getLijst in de methode updateSomething van timer geupdate.

Welnu, kan het zijn dat die lijst niet "echt" geupdate wordt? Dat bedoel ik zo: als ik later controleer in Gui met vb admin.getLijst() of er daadwerkelijk iets is verandert aan de lijst, dat er in feite niets is verandert? Dus dat de lijst in timer wel wordt aangepast, maar dat die bewerkingen eigenlijk gebeuren op een soort kloon van admin.getLijst() en als ik dus later die lijst gebruik, het nog steeds de lijst is voor de update-actie?

Het lijkt me dat dit zo is aangezien dat mij nu de enige reden lijkt dat een bepaald stuk van het programma niet werkt.

Bij voorbaat dank :)

EDIT:

ohja, als je een GregorianCalendar aanmaakt, met behulp van new GregorianCalendar(), dan zou deze op de tijd van je pc moeten geïnitialiseerd zijn. Bij mij is dat echter niet het geval, hij "loopt" steeds 2u achter :p , niets essentieels, maar ik vroeg me af of het op te lossen was? Ik heb al wat geprobeert met timezones, maar het lukte niet echt.

[ Voor 13% gewijzigd door Verwijderd op 05-05-2009 20:44 ]


Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-08 02:59

Gerco

Professional Newbie

Als je twee klassen hebt die er zo uitzien:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Class1 {
  public doeIets(List<String> lijst) {
    lijst.add("Some object");
  }
}

public class Class2 {
  public static void main(String[] args) {
    List<String> lijst = new ArrayList<String>();
    new Class1().doeIets(lijst);
    System.out.println(lijst);
  }
}


Dan zou het gewoon moeten werken. Maak je misschien een kopie van de lijst in getLijst() en geef je die kopie terug? Wijzig je een object in de lijst, of voeg je er iets aan toe of verwijder je iets? Dat zijn allemaal redelijk relevante vragen :)

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


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
alvast bedankt (sry dat ik zo "laat" terug reageer, internet lag er hier uit om de 1 of andere vage DNS reden).

het zit zo:
in Gui doe ik bewerkingen op een lijst en op elementen van een lijst vb admin.getList().add(pikachu) of admin.getList().get(3).setName("pikachu") admin is een instantie van de klasse Admin. De lijst is dus eigen aan admin. ook maak ik in dezelfde klasse Gui een instantie van Timer, genaamd timer. timer heeft vb een methode public void removeItem(ArrayList<Pokémon> pokéList). Met deze methode verwijder ik een bepaald element uit de lijst. Nu roep ik in Gui deze methode van timer aan:
timer.removeItem(admin.getList()). Hierdoor wordt in timer een element verwijderd van admin.getList(). Nu was mijn vraag of dit element dan ook daadwerkelijk geupdate wordt, m.a.w. de lijst van admin bevat nu ook 1 element minder. Of wordt die timer bewerking enkel gedaan op een kopie van de lijst?

ik heb heel de klasse timer nu gewoon in Gui staan, het werkt nog niet volledig dus de fout zit denk ik ergens anders dus ik neem aan dat die lijst gewoon geupdate wordt zoals ik het zou willen? iig ga ik even zo verder en dan kan ik het nog altijd in een aparte klasse steken.

thnx iig.

btw, alle bovenstaande methodes zijn fictief, enkel Admin, Gui en Timer zijn echte klassen

Acties:
  • 0 Henk 'm!

  • momania
  • Registratie: Mei 2000
  • Laatst online: 22:26

momania

iPhone 30! Bam!

Verwijderd schreef op dinsdag 05 mei 2009 @ 23:14:
Nu was mijn vraag of dit element dan ook daadwerkelijk geupdate wordt, m.a.w. de lijst van admin bevat nu ook 1 element minder. Of wordt die timer bewerking enkel gedaan op een kopie van de lijst?
Zolang jij geen kopie meegeeft (wat wel gebruikelijk zou zijn) wordt die bewerking gewoon op de orginele lijst uitgevoerd.

Voor dat je hier mee verder gaat 'klooien', zoek eens op termen als; mvc, collection framework en unit testen (junit). Vooral die laatste is een goed begin: als je niet weet wat de uitkomst is, of wat het gedrag is: test het! ;)

Neem je whisky mee, is het te weinig... *zucht*


Acties:
  • 0 Henk 'm!

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
Verwijderd schreef op dinsdag 05 mei 2009 @ 23:14:
...

timer.removeItem(admin.getList()). Hierdoor wordt in timer een element verwijderd van admin.getList(). Nu was mijn vraag of dit element dan ook daadwerkelijk geupdate wordt, m.a.w. de lijst van admin bevat nu ook 1 element minder. Of wordt die timer bewerking enkel gedaan op een kopie van de lijst?
Zolang je gewoon dezelfde lijst hebt doorgegeven, en geen kopie is er alleen sprake van twee verschillende references naar één en dezelfde lijst. De aanpassingen in timer moeten ook elders zichtbaar zijn.
Zorg wel dat je een synchronised List gebruikt als je met verschillende threads werkt.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
momania schreef op woensdag 06 mei 2009 @ 06:48:
[...]

Zolang jij geen kopie meegeeft (wat wel gebruikelijk zou zijn) wordt die bewerking gewoon op de orginele lijst uitgevoerd.

Voor dat je hier mee verder gaat 'klooien', zoek eens op termen als; mvc, collection framework en unit testen (junit). Vooral die laatste is een goed begin: als je niet weet wat de uitkomst is, of wat het gedrag is: test het! ;)
ja testen was ik mee bezig maar ik kreeg steeds een overanderlijke rij terug of ik de bewerking nu deed in Gui zelf zonder timer object aan te maken, of via een aparte klasse. Achteraf bleek dus dat er een fout in de bewerkingsmethode zat en er daarom niets veranderde. Als ik had nagedacht had ik gewoon even een simpele methode moeten schrijven die zoiezo werkte en dan testen of de rij veranderde of niet.

met Unit testen hebben we hier ookal gewerkt, moet hier en daar idd wel wat testklassen e.d. aanmaken.

mja weer wat bijgeleerd zeker, thnx.
Pagina: 1