juul Skrevet 11. november 2004 Del Skrevet 11. november 2004 Hei! Får en feilmelding når jeg starter programmet mitt: Exception in thread "main" java.lang.ClassCastException I første omgang er jeg interessert i å vite hva kan forårsake det, og hvis jeg ikke får det til etter hint fra dere kan jeg gjerne legge ut koden for programmet. Som dere sikkert har skjønnt har jeg ikke noe bre erfaring innen programmering! Lenke til kommentar
juul Skrevet 11. november 2004 Forfatter Del Skrevet 11. november 2004 Beklager, diverse skrivefeil der! Gikk litt fort i svingene! Lenke til kommentar
oro2 Skrevet 11. november 2004 Del Skrevet 11. november 2004 Det står ganske greit forklart her: http://java.sun.com/j2se/1.4.2/docs/api/ja...tException.html Hvis du vil ha hjelp til å unngå denne exeption bør nok poste koden der feilen oppstår Lenke til kommentar
Frank2004 Skrevet 11. november 2004 Del Skrevet 11. november 2004 Hei! Får en feilmelding når jeg starter programmet mitt: Exception in thread "main" java.lang.ClassCastException I første omgang er jeg interessert i å vite hva kan forårsake det, og hvis jeg ikke får det til etter hint fra dere kan jeg gjerne legge ut koden for programmet. Som dere sikkert har skjønnt har jeg ikke noe bre erfaring innen programmering! http://java.sun.com/j2se/1.5.0/docs/api/ja...tException.html Feilmeldingen sier sikkert noe om hvilken linje feilen skjer på også, så da har du litt mer å jobbe med. Lenke til kommentar
Frank2004 Skrevet 11. november 2004 Del Skrevet 11. november 2004 Det står ganske greit forklart her:http://java.sun.com/j2se/1.4.2/docs/api/ja...tException.html Hvis du vil ha hjelp til å unngå denne exeption bør nok poste koden der feilen oppstår Slo meg Lenke til kommentar
juul Skrevet 12. november 2004 Forfatter Del Skrevet 12. november 2004 Bare for å opplyse, så er det en obligatorisk oppgave i kurset inf-1000(UiO) jeg sliter med. Her er koden til metoden jeg får problemer med: void lesVaerDataFraFil(String fnavn) { In innfil = new In("Vaerdata-1.txt"); while(!innfil.lastItem()){ String stasjonsnummer = innfil.inWord(); int dag = innfil.inInt(); int måned = innfil.inInt(); double maxVind = innfil.inDouble(); double nedbør = innfil.inDouble(); double minTemp = innfil.inDouble(); double maxTemp = innfil.inDouble(); Maanedsdata mdata = new Maanedsdata(måned, dag); Stasjon st = (Stasjon) stasjonFraNr.get(stasjonsnummer); st.maanedsdata[måned-1] = mdata; stasjonFraNavn.put(st.stasjonsnavn, st.maanedsdata); stasjonFraNr.put(stasjonsnummer, st.maanedsdata); } } Bakgrunnsinfo: Har allerede lest inn info om stasjoner fra en annen fil, og nå skal jeg altså lese inn månedsdataene for de respektive stasjonene og legge det i hashmappen igjen. Vi bruker to hashmapper en med stasjonsnummer som nøkkel og en annen med stasjonsnavn som nøkkel, men begge skal inneholde det samme objektet. Innlesinga er gjort med hjelp fra EasyIO, en pakke som er laget av de som har kurset. Får problemer i fjerde siste linje, er fullt klar over at koden er amatør messig. Blir glad over tips til å fikse dette. Lenke til kommentar
Frank2004 Skrevet 12. november 2004 Del Skrevet 12. november 2004 (endret) Får problemer i fjerde siste linje, er fullt klar over at koden er amatør messig. Blir glad over tips til å fikse dette. Stasjon st = (Stasjon) stasjonFraNr.get(stasjonsnummer); Denne? Problemet er altså at metoden ikke returnerer en instans av klassen 'Stasjon'. Se litt nærmere på denne metoden, og hva slags type objekt du faktisk har lagret i hashmappet. Hva sier exception trace? Flott om du paster de første 2-3 linjene av dette også. Endret 12. november 2004 av Frank2004 Lenke til kommentar
juul Skrevet 12. november 2004 Forfatter Del Skrevet 12. november 2004 Her er den andre metoden som leser inn stasjons data: void lesStasjonerFraFil(String fnavn) { In innfil = new In("Stasjoner-1.txt"); while(!innfil.lastItem()) { String stasjonsnummer = innfil.inWord(); String stasjonsnavn = innfil.inWord(); String høyde = innfil.inWord(); String kommune = innfil.inWord(); String fylke = innfil.inWord("/n"); Stasjon st = new Stasjon(stasjonsnummer, stasjonsnavn, høyde, kommune, fylke); stasjonFraNavn.put(stasjonsnavn, st); stasjonFraNr.put(stasjonsnummer, st); } } Exection in thread "main" java.lang.ClassCastException at VaerAnalyse.lesVaerDataFraFil(Oblig4.java:53) at VaerAnalyse.<init>(Oblig4.java:23) at Oblig4.main(Oblig4.java:12) der linje 53 er den linja som er omtalt i forrige post: Stasjon st = (Stasjon) stasjonFraNr.get(stasjonsnummer); Takker, for tålmodighet! Lenke til kommentar
Frank2004 Skrevet 12. november 2004 Del Skrevet 12. november 2004 Stasjon st = new Stasjon(stasjonsnummer, stasjonsnavn, høyde, kommune, fylke); stasjonFraNavn.put(stasjonsnavn, st); stasjonFraNr.put(stasjonsnummer, st); Exection in thread "main" java.lang.ClassCastException at VaerAnalyse.lesVaerDataFraFil(Oblig4.java:53) at VaerAnalyse.<init>(Oblig4.java:23) at Oblig4.main(Oblig4.java:12) der linje 53 er den linja som er omtalt i forrige post: Stasjon st = (Stasjon) stasjonFraNr.get(stasjonsnummer); Hmm.. Ser jo absolutt ut som om det du legger inn i map'et er en Stasjon, ja. Prøv å wrappe linje 53 i en try/catch-blokk, og printe ut typen? Noe a.la: try { Object o = stasjonFraNr.get(stasjonsnummer); Stasjon st = (Stasjon) stasjonFraNr.get(stasjonsnummer); } catch (Exception e) { System.out.println("Type: " +o.getClass().getName() ); e.printStackTrace(); } Er forresten ikke nødvendig å legge objektet inn i map igjen etter at du har endret det. Get() henter bare ut en referanse til objektet, som fortsatt også kan nås gjennom map'ene. Lenke til kommentar
skrujern1 Skrevet 14. november 2004 Del Skrevet 14. november 2004 double maxTemp = innfil.inDouble("\n"); //linjeskift og rette opp på String fylke = innfil.inWord("\n"); //linjeskift Vet ikke om det hjelper men.... Lenke til kommentar
Nudo Skrevet 14. november 2004 Del Skrevet 14. november 2004 (endret) Jeg tror feilen ligger i en annen del i programmet. Kanksje i klassen "Stasjon", men det er vanskelig å si når jeg bare har denne lille delen å se på. Legg ut koden i klassen stasjon, så kanskje jeg kan hjelpe eller så er det sikkert noen andre her som ser feilen. Hvis du legger ut mer, så ta med linjenummer også. Tror det er mulig å få med det når du paster, men ikke husker ikke hvordan. Endret 14. november 2004 av Nudo Lenke til kommentar
buskmann Skrevet 14. november 2004 Del Skrevet 14. november 2004 (endret) Stasjon st = (Stasjon) stasjonFraNr.get(stasjonsnummer); Har du 100 % oversikt over forskjell på statiske og ikke-statiske metoder og variabler? For meg ser det ut som om du har et vilkårlig stasjonsnummer og vil vite hvilken stasjon som har dette stasjonsnummeret. Dette må da i en statisk metode. Et enkelt stasjonsobjekt har ingen kjennskap til andre stasjonsobjekter. En statisk Collection-variabel vil imidlertid kunne gjøre denne mappingen for deg. Endret 14. november 2004 av buskmann Lenke til kommentar
oro2 Skrevet 14. november 2004 Del Skrevet 14. november 2004 (endret) Har du 100 % oversikt over forskjell på statiske og ikke-statiske metoder og variabler? For meg ser det ut som om du har et vilkårlig stasjonsnummer og vil vite hvilken stasjon som har dette stasjonsnummeret. Dette må da i en statisk metode. Et enkelt stasjonsobjekt har ingen kjennskap til andre stasjonsobjekter. En statisk Collection-variabel vil imidlertid kunne gjøre denne mappingen for deg. stasjonFraNr en instans av java.util.HashMap, og ikke av Stasjon? Endret 14. november 2004 av oro2 Lenke til kommentar
buskmann Skrevet 14. november 2004 Del Skrevet 14. november 2004 (endret) stasjonFraNr en instans av java.util.HashMap, og ikke av Stasjon? Sorry, det gikk litt fort for meg. Endret 14. november 2004 av buskmann Lenke til kommentar
oro2 Skrevet 14. november 2004 Del Skrevet 14. november 2004 (endret) stasjonFraNavn.put(st.stasjonsnavn, st.maanedsdata);stasjonFraNr.put(stasjonsnummer, st.maanedsdata); Her legges det vel inn noe som ikke er en instans av Stasjon? Tror det er det som fucker opp. Uten at jeg kan si det med sikkerhet da jeg ikke har sett Stasjon-klassen. Endret 14. november 2004 av oro2 Lenke til kommentar
juul Skrevet 15. november 2004 Forfatter Del Skrevet 15. november 2004 Takker, for all hjelp! Forandra på hele programstrukturen, funker ihvertfall nå! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå