Vonbo Skrevet 15. oktober 2004 Del Skrevet 15. oktober 2004 (endret) Denne metoden blir kalt av ActionListener, og skal ta i mot data i textfelter og lagre de i en array (min, max og nedb). Men noe er galt. Kan noen si meg hva? public void lesInnVærdata(int dag) { String getMinTemp = minfelt.getText(); int getMinTempInt = Integer.parseInt(getMinTemp); min[dag] = getMinTempInt; String getMaksTemp = maksfelt.getText(); int getMaksTempInt = Integer.parseInt(getMaksTemp); max[dag] = getMaksTempInt; int i_nedb = 1; boolean ok = false; //feilmelding hvis inntastet negativ verdi while (!ok) { s_nedb = nedbor.getText(); i_nedb = Integer.parseInt(s_nedb); if (i_nedb < 0) { JOptionPane.showMessageDialog(null, "Feil verdi ble tastet inn"); //skriv ut feilmelding } else { ok = true; } nedb[dag] = i_nedb; } } ¨ Her er feilmeldingen kompilatoren skriver ut hvis det kan forklare noen noe: java.lang.ArrayIndexOutOfBoundsException: 1 at Meteorolog.lesInnVærdata(Meteorolog.java:109) at Meteorolog.actionPerformed(Meteorolog.java:189) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1764) at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1817) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:419) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:257) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245) at java.awt.Component.processMouseEvent(Component.java:5134) at java.awt.Component.processEvent(Component.java:4931) at java.awt.Container.processEvent(Container.java:1566) at java.awt.Component.dispatchEventImpl(Component.java:3639) at java.awt.Container.dispatchEventImpl(Container.java:1623) at java.awt.Component.dispatchEvent(Component.java:3480) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3450) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3165) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3095) at java.awt.Container.dispatchEventImpl(Container.java:1609) at java.awt.Component.dispatchEvent(Component.java:3480) at java.awt.EventQueue.dispatchEvent(EventQueue.java:450) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:197) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:144) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:136) at java.awt.EventDispatchThread.run(EventDispatchThread.java:99) Endret 15. oktober 2004 av Vonbo Lenke til kommentar
buskmann Skrevet 15. oktober 2004 Del Skrevet 15. oktober 2004 java.lang.ArrayIndexOutOfBoundsException: 1 at Meteorolog.lesInnVærdata(Meteorolog.java:109) To muligheter: 1. Du prøver å lese en verdi fra en ikkeeksisterende plassering i arrayet. 2. Du prøver å lagre en verdi utenfor opprettet område i et array. To muligheter for å feilsøke: 1. Last ned Eclipse og sett breakpoints ved array-linjene. 2. Skriv noen println-er før og etter array-linjer. Lenke til kommentar
Iyon Skrevet 15. oktober 2004 Del Skrevet 15. oktober 2004 Hvilken linje i din kode er nr 109? Lenke til kommentar
Vonbo Skrevet 16. oktober 2004 Forfatter Del Skrevet 16. oktober 2004 (endret) 109: min[dag] = getMinTempInt; har det noe å si at jeg deklarere arrayene i klassen, slik: int[] min = new int[day]; int[] max = new int[day]; int[] nedb = new int[day]; mens variabelen day ikke får en verdi før i init-metoden? Endret 16. oktober 2004 av Vonbo Lenke til kommentar
Vonbo Skrevet 16. oktober 2004 Forfatter Del Skrevet 16. oktober 2004 kunne du forklart hva jeg burde gjøre da....? Lenke til kommentar
buskmann Skrevet 16. oktober 2004 Del Skrevet 16. oktober 2004 (endret) Du må sette en variabel til en verdi før du kan bruke den. Dette fungerer ikke, jeg får ikke kompilert i Eclipse engang. public static void main(String[] args) { int day; int[] min = new int[day]; day = 3; } Endret 16. oktober 2004 av buskmann Lenke til kommentar
runeb Skrevet 17. oktober 2004 Del Skrevet 17. oktober 2004 109: min[dag] = getMinTempInt; har det noe å si at jeg deklarere arrayene i klassen, slik: int[] min = new int[day]; int[] max = new int[day]; int[] nedb = new int[day]; mens variabelen day ikke får en verdi før i init-metoden? Ja. Når du deklarer variabelen day uten å gi den en verdi får den verdien 0. int[] min = new int[day]; oppretter dermed en array med 0 elementer. Du må derfor vente med å opprette arrayene til etter at du har gitt day en verdi. 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å