Gå til innhold

Anbefalte innlegg

Hei igjen folkens...

 

Et problem blir løst og et annet dukker opp ..

 

jeg har laget et tomt Dager objekt.

 

jeg har laget et tomt Måned objekt.

 

 

Nå får jeg en kompileringfeil som sier at :

 

 

 

 

non-static method uværDag() cannot be referenced from a static context

Dager.uværDag();

 

Koeden ser slik ut.

 

 

Klikk for å se/fjerne innholdet nedenfor


import easyIO.*;
import java.util.*;

class Oblig4 {
   public static void main (String[] args) {

String s1 = "StasjData.txt";
String s2 = "MetData.txt";

Analyse a  = new Analyse(s1, s2);
a.ropPåMenyen();



   }//slutt main metode
}//slutt klasse oblig4

class Analyse {

   In tast = new In();
   Out skjerm = new Out();

   HashMap<String, Stasjon> hashNavnStasjon = new HashMap<String, Stasjon>();
   HashMap<String, Stasjon> hashNrStasjon = new HashMap<String, Stasjon>();

   Analyse (String stasjonsFilnavn, String metroFilnavn) {

lesStasjdata(stasjonsFilnavn);
lesMetData(metroFilnavn);

In StasjData = new In("StasjData.txt");
In MetData = new In("MetData.txt");

   }


   void lesStasjdata(String filnavn){

//lager en forbindelse med filen

In stasjData = new In("StasjData.txt");

while(!stasjData.lastItem()) {

    String stNr = stasjData.inWord();
    String stNavn = stasjData.inWord();
    int moh = stasjData.inInt();
    String stKommune = stasjData.inWord();
    String stFylke = stasjData.inWord();

    //nå må det lages et nytt objekt av klassen stasjon.

    Stasjon stasjInfo = new Stasjon (stNr, stNavn, moh, stFylke, stKommune);

    //  Informasjonen om stasjonene med stasjonsnavn som nøkkel pakkes inn i hashmap 1.
    //Informasjon om stasjonenen med stasjonsnr som nøkkel stappes også inn i hashmap.2

    hashNavnStasjon.put(stNavn, stasjInfo);
    hashNrStasjon.put(stNr, stasjInfo);


}//avslutter while

   }//avslutter metode lesStasjData


   void lesMetData(String Filnavn){

In metData = new In("MetData.txt");

while(!metData.endOfFile()) {

    String stNr = metData.inWord();
    metData.skipWhite();
    int dag = metData.inInt();
    metData.skipWhite();
    int måned = metData.inInt();
    metData.skipWhite();
    double maksVindHastighet=metData.inDouble();
    metData.skipWhite();
    double tempraturMin=metData.inDouble();
    metData.skipWhite();
    double tempraturMaks=metData.inDouble();
    metData.skipWhite();
    double nedbørsMengde=metData.inDouble();
    metData.skipWhite();



    if(hashNrStasjon.containsKey(stNr)) {

 Stasjon stasjInfo = hashNrStasjon.get(stNr);

 Dager dagInfo = new Dager();
 Måned månedInfo =  new Måned();


    }//if


}//avslutter for while.
   }//avslutter metode lesMetData.


   void ropPåMenyen(){

In tast = new In();
Out skjerm = new Out();

int valg = 0;
while (valg !=7) {

    skjerm.outln("________________________________________________________________________________");
    skjerm.outln("\t\t** \t\t VELKOMMEN TIL M.I  \t\t ***");
    skjerm.outln("________________________________________________________________________________");
    luft();
    skjerm.outln("\tDETTE ER HOVEDMENYEN :");
    skjerm.outln("\t----------------------------------------------------");
    luft();
    skjerm.outln("\t1.	Lag En Liste Over Stasjoner");
    skjerm.outln("\t2.	Lag Stasjonsliste for Fylke");
    skjerm.outln("\t3.	Lag månedsoversikt");
    skjerm.outln("\t4.	Sammenlikning Nedbør Kyst / Innland ");
    skjerm.outln("\t5.	Finn Antall Uveærsdager");
    skjerm.outln("\t6.	Sammenlikn Været Østlandet / Nord-Norge");
    skjerm.outln("\t7.	Avslutt");
    luft();
    skjerm.outln("\t----------------------------------------------------");
    luft();
    skjerm.out("\tTast inn ditt valg:\t");

    valg = tast.inInt();

    switch (valg){


    case 1:
 luft();
 skjerm.outln(" \t LAG LISTE OVER STASJONER ");
 luft();
 lagListeStasjoner();

 break;

    case 2:
 luft();
 skjerm.outln("\t*\t LAG STASJONSLISTE FOR ET BESTEMT FYLKE\t*");
 luft();
 lagListeStasjonerFylke();

 break;

    case 3:
 luft();
 skjerm.outln("\t*\t LAG MÅNEDSOVERSIKT\t*");
 luft();
 lagMånedsOversikt();
 luft();

 break;

    case 4:
 luft();
 skjerm.outln("\t*\t SAMMELIKN NEDBØR KYST / INNLAND \t*");
 sammenliknKyst();
 luft();

 break;

    case 5:
 luft();
 skjerm.outln("\t*\t FINN ANTALL UVÆRSDAGER\t*");
 luft();
 finnAntallUværsdager();
 luft();

 break;

    case 6:
 luft();
 skjerm.outln("\t*\tSAMMENLIKN ØST OG NORD\t*");
 sammenLiknØstNord();
 luft();

    case 7:
 luft();
 skjerm.outln("\t\t*\t Du Har valgt å avslutte!\t*");
 luft();
 luft();
 skjerm.outln("  Takk for at du tok deg tid til å stikke innom Norges Meterologiske Institutt!");
 luft();
 skjerm.outln("\t* * *\t\t\t * * GOD JUL * * \t\t\t* *");

    default:
 luft();
 skjerm.outln("\tFeil Menyvalg, Tast mellom 1-7");
 luft();

 break;





    }//avslutter switch.

}//avslutter while løkken
   }//avslutter metoden ropPåMenyen

   void lagListeStasjoner(){

final int BREDDE1 = 15, BREDDE2 = 10, BREDDE3 = 15, BREDDE4 = 8; // fikk litt trøbbel med justeringen ja.. måtte se litt i kapittel 3 for dette.


Iterator it = hashNavnStasjon.values().iterator();
while(it.hasNext()) {
    Stasjon liste = (Stasjon) it.next();

    skjerm.out(liste.stNavn, BREDDE1);
    skjerm.out(liste.stNr, BREDDE2);
    skjerm.out(liste.stKommune, BREDDE3);
    skjerm.out(liste.stFylke, BREDDE3);
    skjerm.outln("\t\t"+liste.moh, BREDDE4);
    skjerm.outln("___________.__________.______________._________________._____________._");



}luft();
skjerm.outln("ST.NAVN"+"\t\tST.NR"+ "\tKOMMUNE"+"\t\tFYLKE"+"\t\t"+"\tHØYDE");
luft();luft();

   }//lagliste
   //1.løp gjennomen av hashmapene.
   //2.For å få laget en sortert liste, settesrr du alle stasjonsnavnene fortløpenede inn i en String-array, alleNavn.
   //disse navnene kan sorteres ved å utføre java.utlil.Arrays.sort(alleNavn).
   //3.Løp gjnneom alle navnene, i akkeNavn og for hvert nav nnskå opp i hashmapen hashNavnStasjon for å finne tilhørende stasjon.


   void lagListeStasjonerFylke(){



final int BREDDE1 = 15, BREDDE2 = 10, BREDDE3 = 15, BREDDE4 = 8;

boolean fantFylke = false;


skjerm.out("Venneligst gi navn på fylket du vil ha listen skrevet ut til :\t");
String svar = tast.inLine().toUpperCase();
luft();luft();

Iterator it = hashNavnStasjon.values().iterator();
while(it.hasNext()) {


    Stasjon st = (Stasjon) it.next();
    if(svar.equals(st.stFylke)) {
 fantFylke= true;
 skjerm.out(st.stNavn, BREDDE1);
 skjerm.out("\t"+st.stNr, BREDDE2);
 skjerm.out("\t"+st.stKommune, BREDDE3);
 skjerm.outln(st.moh, BREDDE4);
 skjerm.outln("___________.___________.___________________._____________.");
 luft();

    }

}if (!fantFylke) { skjerm.outln("Ugyldig fylke!! Venneligst påse at du taster riktig");
}luft();
skjerm.outln("ST.NAVN"+"\t\tNUMMER"+ "\t\tKOMMUNE"+"\t\tHØYDE");
luft();

   }


   void lagMånedsOversikt(){
skjerm.out("\tVenneligst tast navn eller nummer på stasjonen :\t");
String svar = tast.inLine().toUpperCase();
luft();

Stasjon st = null;
if(hashNrStasjon.containsKey(svar)) {
    st = (Stasjon) hashNrStasjon.get(svar);

} else if ( hashNavnStasjon.containsKey(svar)){
    st = (Stasjon) hashNavnStasjon.get(svar);


}else {
    skjerm.outln("\tFeilmelding!");
    skjerm.outln("\t1. Du har tastet et ugyldig stasjonsnr eller stasjonsnavn");
}

   }//slutt på metode månedsoversikt








   void sammenliknKyst(){}

   Dager[] dagInfo;
   int mnd;

 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 måned


   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);
Dager.uværDag();



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

   }//uværsdager

   void sammenLiknØstNord(){}
   void luft() {
System.out.println();
   }


}//slutt klasse analyse

class Stasjon{

   Måned [] mdata = new Måned[6];

   String stNr;
   String stNavn;
   int moh;
   String stFylke;
   String stKommune;


   Stasjon (String stNr, String stNavn, int moh, String stFylke, String stKommune) {

this.stNr= stNr;
this.stNavn= stNavn;
this.moh = moh;
this.stFylke= stFylke;
this.stKommune = stKommune;



   }//avslutter konstruktør stasjon
}//avslutter klassen stasjon

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 ...

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

class Dager {



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



Dager (){}

   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


 

edit: lagt til skjul

Endret av macfjott
Lenke til kommentar
Videoannonse
Annonse
non-static method uværDag() cannot be referenced from a static context

eller på norsk: du er i en statisk metode (f.eks main-metoden), også ønsker du å bruke en non-static metode. Det går ikke!

 

løsning:

enten endre alle metodekall til statiske (legg til nøkkelordet "static" forran metodenavn og returtype), eller putt dine statiske metodekall utenfor static void main-boksen. (Da bør du legge til kontruktør, og ha koden "new Klient();" i main-metoden (hvis fila heter Klient.java)

Endret av qualbeen
Lenke til kommentar

Emnetittelen i denne tråden er ikke god nok, om ikke dette blir endret slik at det er lettere å forstå hva slags informasjon tråden omhandler vil denne bli stengt! En god emnetittel er en tittel som forklarer godt hva innholdet i posten din går ut på. En bruker bør kunne skaffe seg oversikt over hovedinnholdet i posten bare ut fra å lese tittelen. Vennligst forsøk å ha dette i tankene neste gang du starter en tråd, og orienter deg om hva vår nettikette sier om dårlig bruk av emnetitler.

 

Bruk p_edit.gif-knappen i første post for å endre emnetittelen.

 

(Dette innlegget vil bli fjernet ved endring av emnetittel. Vennligst ikke kommenter dette innlegget, men rapporter gjerne dette innlegget når tittelen er endret, så vil det bli fjernet.)

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...