Gå til innhold

HJELP...KALLl av metoder fra en annen klasse.


Anbefalte innlegg

Hallo!

 

Vil først si at det er første gang jeg skriver her... så om jeg formulerer spørsmålet mitt litt klønete så sier jeg unskyld på forhånd ....

 

Da hopper vi rett på saken..Sitter fast med en liten ting her i oblig 4.

 

Jeg prøver å kalle på en metode i en annen klasse, det går ikke.. Feilmeldingen er.

 

cannot find symbol

symbol : method Måned()

location: class Analyse

Måned();

^

 

Jeg skifter navn på metoden og flytter den over til klassen jeg jeg egentlig jobber i metoden til klassen jeg driver å jobber med , da får jeg en feilmelding som heter:

 

invalid method declaration; return type required

sjekkMåned (int mnd) {

^

________________________________________________________________

 

 

Koden for sjekkingen i klasse Måned ser slik ut:

 

Måned (int mnd) {

 

if ( mnd == 2 ) {dagInfo = new Dager[28];}

else if ( mnd == 4 || mnd == 6){dagInfo = new Dager[30];}

else if ( mnd == 3 || mnd == 5){dagInfo= new Dager[31];}else{System.out.println();System.out.println("Feil Måned ");}

 

 

 

 

 

 

 

}//metode måned

 

Denne koden skal brukes til å fiske opp verdier for vind / nedbør for en spesifikk måned...

 

Jeg får det ikke til HJELP ..

Lenke til kommentar
Videoannonse
Annonse

du har ikke oppgitt hva metoden din skal returnere.

her er noen eksempler på hva som kan returneres, bare fantasien setter grenser for hva du kan returnere... Ønskes ingen retur, brukes ordet "void".

//ingen retur:
void metodeNavn(){ /* din kode her */ }

//returnerer en int-verdi:
int metodeNavn(){ /* din kode her */ }

//returnerer String-objekt:
String metodeNavn(){ /* din kode her */ }

Lenke til kommentar

hvordan ser egentlig denne metoden din ut?

og hvis du tar et kurs på universitet/høyskole/lignende, er det ikke instanser der som skal bistå med slike problemer?

(ikke at jeg har noe imot å hjelpe her, men av egen erfaring er det enklere å forstå java når man kan snakke med noen ansikt til ansikt, framfor krumlete formuleringer på et forum)

Lenke til kommentar

int sjekkMåned(int mnd) {

 

 

if ( mnd == 2 ) {dagInfo = new Dager[28];}

else if ( mnd == 4 || mnd == 6){dagInfo = new Dager[30];}

else if ( mnd == 3 || mnd == 5){dagInfo= new Dager[31];}else{System.out.println();System.out.println("Feil Måned ");}

 

 

return mnd;

 

 

 

 

}//metode sjekkMåned

 

 

 

 

// også leser jeg inn data fra brukeren

 

void finnAntallUværsdager(){

 

skjerm.out("\tVenneligst tast stasjonsnummer:\t");

String stasjnr= tast.inLine();

if (hashNrStasjon.containsKey(stasjnr) == true) {

 

skjerm.out("\tVenneligst tast inn maaneden du vil ha dataene for(1-6):\t");

 

int mnd = tast.inInt();

sjekkMåned();// her tryner programmet.

 

}

 

 

//et annet alternativ var å ha denne if testen i en annen klasse som heter Måned.. da ville koden sett slik ut

 

 

class Måned{

 

 

 

Dager[] dagInfo;

int mnd;

 

 

// boolean februar() {if (mnd == 2) {

// dagInfo = new Dager[31];return true; }

// else {return false;}

// }

 

Måned(int mnd) {

 

 

if ( mnd == 2 ) {dagInfo = new Dager[28];}

else if ( mnd == 4 || mnd == 6){dagInfo = new Dager[30];}

else if ( mnd == 3 || mnd == 5){dagInfo= new Dager[31];}else{System.out.println();System.out.println("Feil Måned ");}

 

 

 

 

 

 

 

}//metode måned

 

}// klasse måned

 

// ved å bruke denne metoden får jeg ihvertfall ikke noe til... det er den jeg helst vil bruke, ellers så vil klassen Måned være helt tom hvis jeg klipper ut dens metoder og putter dem i andre klasser.. ..

Lenke til kommentar

Metoden din krever et argument , int mnd,

int mnd = tast.inInt();
sjekkMåned();

Skal være

int mnd = tast.inInt();
sjekkMåned(mnd);

 

Og om du vil ha sjekkMnd() metoden i en annen klasse, så må du enten lage denne static eller så må du oppprette et objekt av denne klassen.

Eks

class klasse1{
   public klasse1(){
    public int enMetodeSomReturnererInt(int enInt){
      /* Noe kode her*/
    int enEllerAnnenInt = enInt *3;
      return enEllerAnnenInt;
    }
   }
}

I main oppretter man et objekt av klasse1

class main{
 public static void main[String[]args){
 /* oppretter objekt av klasse1*/
 klasse1 enKlasse = new klasse1();
 /*bruker metoden*/
 int returInt = enKlasse.enMetodeSomReturnererInt(28);
 system.out.println(returInt);
 }
}

Endret av Qwark
Lenke til kommentar
Metoden din krever et argument , int mnd,

int mnd = tast.inInt();
sjekkMåned();

Skal være

int mnd = tast.inInt();
sjekkMåned(mnd);

 

Og om du vil ha sjekkMnd() metoden i en annen klasse, så må du enten lage denne static eller så må du oppprette et objekt av denne klassen.

Eks

class klasse1{
   public klasse1(){
    public int enMetodeSomReturnererInt(int enInt){
      /* Noe kode her*/
    int enEllerAnnenInt = enInt *3;
      return enEllerAnnenInt;
    }
   }
}

I main oppretter man et objekt av klasse1

class main{
 public static void main[String[]args){
 /* oppretter objekt av klasse1*/
 klasse1 enKlasse = new klasse1();
 /*bruker metoden*/
 int returInt = enKlasse.enMetodeSomReturnererInt(28);
 system.out.println(returInt);
 }
}

7267741[/snapback]

 

 

Heisann..

 

Den klammeparantesen ble fjernet ved et uhell..

 

Jeg leste den oppdaterte posten din ja, men valgte å flytte hele metoden til samme klasse.

 

Om jeg setter public bak boolean så vil det fortsatt ikke fungeren om jeg kaller den fra en annen klasse ( ikke main ) klassen jeg skal kalle den ifra heter Analyse..

 

og jeg kaller på metoden slik

 


uværDag();

 

kanskje kallet feilen ligger i ?? ikke vet jeg !!

 

 

legger forøvrig litt av koden her inne , da jeg er så stressa at jeg ikke vet hvor jeg egentlig gjør feil.. :(

 


void finnAntallUværsdager(){

skjerm.out("\tVenneligst tast stasjonsnummer:\t");
String stasjnr= tast.inLine();
if (hashNrStasjon.containsKey(stasjnr) == true) {

skjerm.out("\tVenneligst tast inn maaneden du vil ha dataene for(1-6):\t");

int mnd = tast.inInt();
sjekkMåned(mnd);
uværDag();



}else {
 luft();
 skjerm.outln("\tFeilmelding: ");
 skjerm.outln("*\tDette er ikke et riktig stasjonsnummer");
 skjerm.outln("*\tKontroller din inntasting");}

   }//uværsdager


 

 

klasse Dager ser slik ut..

 

 



class Dager {



   double maksVindHastighet;
   double tempraturMin;
   double tempraturMaks;
   double nedbørsMengde;





   Dager(double maksVindHastighet, double tempraturMin, double tempraturMaks, double nedbørsMengde) {





this.maksVindHastighet = maksVindHastighet;
this.tempraturMaks = tempraturMaks;
this.tempraturMin = tempraturMin;
this.nedbørsMengde = nedbørsMengde;



   }//avslutter dagkonstruktøren

  public boolean uværDag(){//legger denne testen her for å henge med definisjonen til å være O.O...

if (maksVindHastighet!= -99 && nedbørsMengde != -99 && maksVindHastighet>=12 && nedbørsMengde >=10 ) {return true;

}else {return false;}



   }//boolean metode
}//avslutter klassen dag

Lenke til kommentar
Ser ikke at du har opprettet et objekt av dager, når du skal sjekke uværsdager så må du ha data som ligger i et dager-objekt å sjekke med.

7268349[/snapback]

 

 

dagobjektet ligger i klassen måned

 


class Måned{


     // februar har 28 dager... april og juni har 30 dager og jannuar ,mars og mai har 31 dager, denne informasjonen
     //burde lagres i en metode her og bli kalt på fra et eller annet sted ...



   Dager[] dagInfo;
  int mnd;


 //   boolean februar() {if (mnd == 2) {
//  dagInfo = new Dager[31];return true; }
 //   else {return false;}
 //   }

 Måned(int mnd) {


  if ( mnd == 2 )     {dagInfo = new Dager[28];}
  else if ( mnd == 4 || mnd == 6){dagInfo = new Dager[30];}
  else if ( mnd == 3 || mnd == 5){dagInfo= new Dager[31];}else{System.out.println();System.out.println("Feil Måned ");}







}//metode måned

}// klasse måned

Lenke til kommentar

Klikk for å se/fjerne innholdet nedenfor
Ser ikke at du har opprettet et objekt av dager, når du skal sjekke uværsdager så må du ha data som ligger i et dager-objekt å sjekke med.

7268349[/snapback]

 

dagobjektet ligger i klassen måned

class Måned{
     // februar har 28 dager... april og juni har 30 dager og jannuar ,mars og mai har 31 dager, denne informasjonen
     //burde lagres i en metode her og bli kalt på fra et eller annet sted ...
   Dager[] dagInfo;
  int mnd;
 //   boolean februar() {if (mnd == 2) {
//  dagInfo = new Dager[31];return true; }
 //   else {return false;}
 //   }
 Måned(int mnd) {
  if ( mnd == 2 )     {dagInfo = new Dager[28];}
  else if ( mnd == 4 || mnd == 6){dagInfo = new Dager[30];}
  else if ( mnd == 3 || mnd == 5){dagInfo= new Dager[31];}else{System.out.println();System.out.println("Feil Måned ");}
}//metode måned
}// klasse måned

7268396[/snapback]

mulig jeg ser dårlig , men jeg ser bare en Dager tabell i klassen måned og ikke noe objekt;

f.eks

Dager dager = new Dager(6,-14,28,13);

også metodekall

dager.enMetodeIDager(etArgumentInnHer);

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...