Avatar billede nutten Nybegynder
05. maj 2001 - 23:30 Der er 9 kommentarer og
1 løsning

Metoder og Arrays.

Man  definerer i en klasse og indsætter værdier i et array, men ikke så dette array bliver fyldt ud.

Man vil herefter indsætte flere værdier i dette array i en metode fra en anden klasse.

Hvorfor virker det ikke?
Avatar billede erikjacobsen Ekspert
05. maj 2001 - 23:33 #1
Øh, har du noget kode?
Avatar billede nutten Nybegynder
05. maj 2001 - 23:37 #2
Ja, men selve princippet om det kan lade sig gøre.

Vi får en masse NullPointerException\'s, vi kan sagtens bruge det definerede array i den klasse det er defineret, men hvis vi i en metode i en anden klasse vil udskrive hvad der i dette array får vi disse exceptions ????
Avatar billede erikjacobsen Ekspert
05. maj 2001 - 23:46 #3
Jamen, rigtigt gjort kan det sagtens lade sig gøre. Derfor lidt kode :)
Avatar billede nutten Nybegynder
06. maj 2001 - 00:02 #4
skæringspunkter defineres nederst i klasse test som:
public static double[][] skæringsPunkter;

I følgende metode defineres højde og bredde på skæringsPunkter.

public void mindsteT(){
skæringsPunkter = new double[skæringMedPlanT[0].length][9];
k = 0;
// Køres igennem for hver referencelinie
for(int i = 0;i < skæringMedPlanT[0].length;i++){
// min sættes til første t-værdi for hver linie som reference.
min = skæringMedPlanT[0][k];
// Kører antallet af planer igennem
for(int j = 0;j < plan.antalPlaner;j++){
  if(min >= 0.0){
    if(min < skæringMedPlanT[j][i]){
    min = min;
    }
    else{
        if(skæringMedPlanT[j][i] > 0.0){
      min = skæringMedPlanT[j][i];
      skæring(min,i);
      plan.normalVærdier(i,j);
        }
    }
  }
  else{
      min = skæringMedPlanT[j][i];
      skæring(min,i);
      plan.normalVærdier(i,j);
  }
}

metoden skæring(min,i) ligger i samme klasse test.
normalVærdier(i,j) ligger selvsagt i klassen plan.

skæring kan godt indsætte værdier i skæringsPunkter[][], men det kan normalVærdier IKKE. Vores eneste konklusion på dette problem er at normalVærdier ligger i en anden klasse end hvor skæringsPunkter bliver defineret eller ????

Undskyld hvis koden ser lidt rodet ud.
Avatar billede nutten Nybegynder
06. maj 2001 - 00:06 #5
Klassen plan arver fra klassen test, hvis det hjælper.
Avatar billede erikjacobsen Ekspert
06. maj 2001 - 00:12 #6
ja, det er jo nok derfor. Du har måske - for at undgå syntaksfejl - fået
defineret skæringspunkter et sted i eller omkring normalVærdier, og så
har du altså to arrays (det er bare et gæt). Prøv at definere i plan:

public void normalVærdier(int i,int j,double[][] skæringsPunkter) {

}

og kald den med

plan.normalVærdier(i,j,skæringsPunkter);

så kører det --- måske :)
Avatar billede nutten Nybegynder
06. maj 2001 - 00:14 #7
Det er prøvet uden held.
Avatar billede erikjacobsen Ekspert
06. maj 2001 - 00:16 #8
Hvis du vil kan du sende hele molesjavsen til min email (klik på mit
navn til venstre), og så kigger jeg det igennem (i aften eller i morgen).
Løsningen skal nok komme her :)
Avatar billede nutten Nybegynder
06. maj 2001 - 20:45 #9
Vi fandt fejlen, det var ikke det array, der var problemet, men et andet array, der ikke blev oprettet.
Ellers tak for forslaget.
Avatar billede logical Nybegynder
06. maj 2001 - 20:49 #10
Uden at vide alt for meget om jeres kode (da der kun er udsnit), vil jeg da påstå, at hvis I erklærer en variable både public og static kan alle nå den uden at kende instancer af klassen, ved at prefixe klassenavnet, ala.

test.skæringsPunkter[3][3]=4.5;

Men hvis i har NullPointerExceptions i jeres kode, har det intet med indholdet af arrayet at gøre, men måske selve allokeringen af arrayet.
Alle steder i refererer til skæringspunkter er der potentiel NullPointerException hvis I ikke har oprettet arrayet forinden, og det sker ifølge jeres kode i mindsteT() metoden. Før denne metode er kaldt, vil der ikke være noget array at arbejde på, og alle kald vil give NullPointerException.

Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester