HeadBlast Skrevet 11. desember 2010 Skrevet 11. desember 2010 Hei, sitter her å tukler med gamle eksamensoppgaver da jeg har eksamen i java snart. Har en klasse som ser slik ut: public class Fargebilder { private final int hvit = 0; private final int svart = 1; private final int blå = 2; public String navn; public int[][] fargetabell; public Fargebilder(String startNavn, int[][] nyFargetabell) { navn = startNavn; fargetabell = new int[nyFargetabell.length][nyFargetabell[0].length]; for(int i=0; i<nyFargetabell.length; i++) { for (int j=0; i<nyFargetabell[i].length; j++) { fargetabell[i][j] = nyFargetabell[i][j]; } } } public boolean gyldigeIndekser(int x, int y) { return x>= 0 && x < finnHøyde() && y>=0 && y < finnBredde(); } public boolean gyldigFarge(int farge) { return farge == hvit || farge == svart || farge== blå; } public int finnHøyde() { return fargetabell.length; } public int finnBredde() { return fargetabell[0].length; } public int finnFarge(int x, int y) { if(gyldigeIndekser(x, y)) { return fargetabell[x][y]; }else return -1; } public int finnAntallForekomster(int farge) { int k=0; for(int i=0; i<fargetabell.length; i++) { for(int j=0; j<fargetabell[i].length; j++) { if(fargetabell[i][j] == farge) { k++; } } } return k; } public boolean finnesFarge(int farge) { return (finnAntallForekomster(farge) > 0); } public void byttUtFarge(int farge1, int farge2) { for(int i=0; i<fargetabell.length; i++) { for(int j=0; j<fargetabell[i].length; j++) { if(fargetabell[i][j] == farge1) { fargetabell[i][j] = farge2; } } } } } Har lagd et lite klientprogram for å teste om det fungerer som ser slik ut: import static javax.swing.JOptionPane.*; public class Fargebilderklient { public static void main(String[] args) { int[][] tabell = {{0,1,0}, {1,1,1}}; String a = showInputDialog(null, "Hva heter testen?"); Fargebilder b = new Fargebilder(a, tabell); System.out.println(b.finnHøyde()); } } Når jeg skal kjøre dette får jeg ArrayIndexOutOfBoundsException 3, noen som har en god forklaring på dette? Mvh HeadBlast.
GeirGrusom Skrevet 11. desember 2010 Skrevet 11. desember 2010 Jeg klarer ikke å se hva som er galt. Hvilken linje kommer feilmeldingen på? Har du prøvd å debugge?
HeadBlast Skrevet 11. desember 2010 Forfatter Skrevet 11. desember 2010 Jeg klarer ikke å se hva som er galt. Hvilken linje kommer feilmeldingen på? Har du prøvd å debugge? at.Fargebilder 18 at.Fargebilderklient 8 Hva betyr å debugge om jeg tør spørre ?
GeirGrusom Skrevet 11. desember 2010 Skrevet 11. desember 2010 Mange utviklingsverktøyer har en mulighet for å starte programmet, og hele tiden følge med på verdier i variabler osv. og til å pause programmet når det skjer en feil. På denne måten kan en da se hva som er i de forskjellige variablene og se hva som førte til feilen. Ser feilen nå: for (int j=0; i<nyFargetabell.length; j++) du har skrevet i istedet for j.
HeadBlast Skrevet 11. desember 2010 Forfatter Skrevet 11. desember 2010 Mange utviklingsverktøyer har en mulighet for å starte programmet, og hele tiden følge med på verdier i variabler osv. og til å pause programmet når det skjer en feil. På denne måten kan en da se hva som er i de forskjellige variablene og se hva som førte til feilen. Ser feilen nå: for (int j=0; i<nyFargetabell.length; j++) du har skrevet i istedet for j. Ah ok skjønner, bruker textpad jeg. Der funket det ja, takk skal du ha! )
miXer Skrevet 11. desember 2010 Skrevet 11. desember 2010 Og istedenfor å gå igjennom hvert element i nyFargetabel1 og legge dem til fargetabel1, så kan du bare si: fargetabel1 = nyFargetabel1; så slipper du hele for loopen
HeadBlast Skrevet 11. desember 2010 Forfatter Skrevet 11. desember 2010 Ja, det er sant. Tenkte bare pga lærerne har lagt så mye vekt på dyp kontra grunn kopiering, og selv om det ikke er behov for det her så ble det slik
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å