Not Impressed Skrevet 24. april 2015 Del Skrevet 24. april 2015 Holder på med ett forsikringsprogram hvor blant annet kundene, enkeltforsikringer, osv, skal kunne "slettes" og derfor ikke finnes når man søker på dem senere. De skal derimot vise i historikksøk. Nå vises all historikk. Tenkte derfor å legge til en boolean i hver klasse( person, bil, båt, osv) hvor false = ikkeSlettet og true = slettet. Starter med å legge inn: private boolean slettetKunde = false; og videre nede: public boolean getSlettetKunde() { return slettetKunde; } og public void setSlettetKunde( boolean sk ) { slettetKunde = sk; } Jeg har allerede en boolean i klassen med boolean totalKunde = false, og med set- og getmetode nedenfor. Dette medførte ingen feil og programmet kjørte bra. Når jeg nå kjører programmet får jeg opp en ArrayIndexOutOfBoundsException ( i en annen klasse og metode ), men tydelig at feilen kommer fra Personklassen, og programmet lukker seg. Når jeg så har slettet det jeg har lagt inn med "slettetKunde" så får jeg fortsatt samme feilen! Selv om jeg har kopiert alt fra originalen og inn så får jeg samme feilen ( lagrer selvfølgelig mellom hver endring ). Jeg må rett og slett slette hele mappen og legge inn originalen på nytt for å få det til å funke. Bruker NetBeans og river meg i håret! Hvorfor får jeg feilen og hvorfor fungerer det ikke når jeg sletter endringene i selve programmet og lagrer? Hvis dere har ett bedre forslag på hvordan jeg kan få til å "slette" (gjemme?) kunder, men finne dem i historikk så tar jeg gjerne i mot tips! Lenke til kommentar
MrL Skrevet 24. april 2015 Del Skrevet 24. april 2015 (endret) Det er vanskelig å si hva problemet er utifra det der, men en ArrayIndexOutOfBoundsException betyr at feilen skyldes et sted i en array. Dvs at du prøver å aksessere en index som ikke finnes i arrayen , er nok en logisk eller annen feil i en for-løkke tenker jeg. Sjekk setPersonTable Endret 24. april 2015 av MrL Lenke til kommentar
Joachim Hansen Skrevet 24. april 2015 Del Skrevet 24. april 2015 Bruke kode tags og hvis koden din så skal vi være mer behjelpelig Nå antar jeg at du skriver til fil. Skriver du et seralisert objekt, XML eller plain? Hvis du skriver i et vanlig tekstformat som du selv sier formatet på, får du en tett kobling mot applikasjonen din og logikken i applikasjonen din. Jeg vil anbefale at du skriver XML <ALLE> <Person> </Person> <Slettet> <Person> </Person> </Slettet> "Alle" kan være node listen din for historikk, mens "Slettet" kan være nodelisten for data som er "slettet". Du kan også bruke atributter for om det er slettet eller ei. Lenke til kommentar
Not Impressed Skrevet 24. april 2015 Forfatter Del Skrevet 24. april 2015 Bruke kode tags og hvis koden din så skal vi være mer behjelpelig Nå antar jeg at du skriver til fil. Skriver du et seralisert objekt, XML eller plain? Hvis du skriver i et vanlig tekstformat som du selv sier formatet på, får du en tett kobling mot applikasjonen din og logikken i applikasjonen din. Jeg vil anbefale at du skriver XML <ALLE> <Person> </Person> <Slettet> <Person> </Person> </Slettet> "Alle" kan være node listen din for historikk, mens "Slettet" kan være nodelisten for data som er "slettet". Du kan også bruke atributter for om det er slettet eller ei. Skriver serialisert objekt. De er veldig hissige på at det ikke skal være dobbellagring så tenkte at hvis jeg lagrer en historikkliste og en slettetliste så vil det være nettopp det. Lenke til kommentar
quantum Skrevet 24. april 2015 Del Skrevet 24. april 2015 Det er jo umulig å si hva problemet er når du ikke poster kode. Men - kan det være at du leser opp/deserialiserer serialiserte data inn i "forrige versjon" av programmet hvor du ikke har noen boolsk variabel som har vært generert/serialisert fra en versjon av programmet hvor variabelen slettetKunde er med? Altså, når du endrer klassen slik at det "serialiserte fingeravtrykket" endres, må du slette evt. fil med serialiserte data, siden det som ligger der ikke er kompatibelt med programmet ditt. I såfall forklarer det litt, men ikke hvorfor du fikk feilen i første omgang (tror jeg). http://stackoverflow.com/questions/285793/what-is-a-serialversionuid-and-why-should-i-use-it Lenke til kommentar
Not Impressed Skrevet 24. april 2015 Forfatter Del Skrevet 24. april 2015 Programmet er en del av en hovedoppgave som skal leveres inn i mai ( i stedet for eksamen ), derfor holder jeg litt igjen på å dele koden selv om jeg skjønner utmerket godt at det gjør ting mye, mye lettere. Ett annet problem er at det er såpass uferdig. Dette er en gruppeoppgave hvor vi tar oss av av forskjellige klasser ( som selvfølgelig ikke gjør ting lettere, men arbeidet må spres ) slik at flere av oppgavene som programmet ikke kan utføres. Lenke til kommentar
Not Impressed Skrevet 24. april 2015 Forfatter Del Skrevet 24. april 2015 Men kan sende det jeg har som kan være aktuelt for denne saken. Lenke til kommentar
Persn Skrevet 24. april 2015 Del Skrevet 24. april 2015 Det står at krasjen skjer i setPersonTable i VinduVisAlle, så du kan begynne med å vise oss den metoden. Gjerne marker hvilken linje som er linje 51. Lenke til kommentar
henrikwl Skrevet 24. april 2015 Del Skrevet 24. april 2015 Som andre her sier: grunnen til kræsjen ligger i dataene som programmet produserer. Hvis programmet både skriver til og leser fra fil, så vil ikke nødvendigvis det at du sletter denne koden hjelpe. Uten å se hele koden er det basically umulig å si hva som er feil, men antakelig bruker du denne boolean-verdien på en eller annen måte når du skriver til denne filen. Måten du bruker denne på gjør formodentlig at dataene ender opp i et format som ikke passer med måten den innlesende koden er skrevet på. Bruk litt tid på å debugge den delen av programmet, tenker jeg. Lenke til kommentar
Not Impressed Skrevet 24. april 2015 Forfatter Del Skrevet 24. april 2015 Det står at krasjen skjer i setPersonTable i VinduVisAlle, så du kan begynne med å vise oss den metoden. Gjerne marker hvilken linje som er linje 51. Her er metoden setPersonTable: Kanskje lettere å sende hele koden? Lenke til kommentar
Not Impressed Skrevet 24. april 2015 Forfatter Del Skrevet 24. april 2015 Samme feilen skjer om jeg legger til boolean i båt, bil, hus, osv også. Skal prøve å bli smartere på det senere i helgen når jeg har tid! Lenke til kommentar
Persn Skrevet 24. april 2015 Del Skrevet 24. april 2015 Du kan bruke code tags for å dele kode på en mer leselig måte. System.out.println("Kode"); Det dyptliggende problemet er nok som de andre sier, det skjer noe feil når du leser inn data, derfor har arrayen 0 ellementer. Men det som forsåker selve krasjen her er at du prøver å aksessere hardkodete indexer i en array, uten å faktisk ha gjort en sjekk på om arrayen har har disse indexene. Jeg går ut i fra at dette er debugsetninger som ikke skal følge med i ferdig produkt siden det er hardkodet aksessering(fy-fy) og det printes til kommandolinjen. Isåfall kan du legge til if-setning rundt Vindu.setUtskriftsomraadet som sjekker at arrayen har de verdiene du prøver å nå for å unngå IndexOutOfBoundsExceptions. Merk at dette kommer kun til å fikse krasjen, men ikke problemet med at arrayen ikke har de elementene den skal ha. Hvis du vil sende hele koden som du sier så blir det mye enklere å hjelpe til. Lenke til kommentar
quantum Skrevet 25. april 2015 Del Skrevet 25. april 2015 Lurt å sette breakpoints rundt om på passe steder i koden og inspisere variablene for å se hva som foregår... Lenke til kommentar
Not Impressed Skrevet 26. april 2015 Forfatter Del Skrevet 26. april 2015 Ok. Jeg skal ta dette med meg videre når vi skal jobbe videre med prosjektet i morra. Takker så mye for tips enn så lenge! 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å