Gå til innhold

Anbefalte innlegg

Hei

Kunne noen hjelpe meg å finne hvorfor får jeg feil melding når jeg prøver å kjøre den

java.lang.NullPointerException

 

at oblig3.HybelHus.<init>(Oblig3.java:207)

 

at oblig3.Oblig3.main(Oblig3.java:130)

 

Exception in thread "main"

 

 



import java.io.*;
import java.util.*;

import java.net.URL;



class In  {

 // Fields
 static final String versjon = "ver.3.2 - 2006-08-28";

 // Constructors
 public In() { }
 public In(String string) { }
 public In(URL uRL) { }

 // Methods
 public void setDelimiter(String string) { }
 public void resetDelimiter() { }
 public String getDelimiter() { return null;}
 public int getLineNumber() { return 0;}
 public String inLine() { return null;}
 public String readLine() { return null;}
 public char inChar() { return '\u0000';}
 public char inChar(String string) { return '\u0000';}
 public boolean endOfFile() { return false;}
 public char nextChar() { return '\u0000';}
 public boolean hasNextChar() { return false;}
 public boolean hasNextChar(String string) { return false;}
 public void skipWhite() { }
 public void skipSep() { }
 public void skipSep(String string) { }
 public String next() { return null;}
 public String inWord() { return null;}
 public String inWord(String string) { return null;}
 public boolean hasNext() { return false;}
 public boolean hasNext(String string) { return false;}
 public boolean lastItem(String string) { return false;}
 public boolean lastItem() { return false;}
 public boolean inBoolean() { return false;}
 public boolean inBoolean(String string) { return false;}
 public boolean hasNextBoolean() { return false;}
 public boolean hasNextBoolean(String string) { return false;}
 public byte inByte() { return 0;}
 public byte inByte(String string) { return 0;}
 public boolean hasNextByte() { return false;}
 public boolean hasNextByte(String string) { return false;}
 public double inDouble() { return 0.0;}
 public double inDouble(String string) { return 0.0;}
 public boolean hasNextDouble() { return false;}
 public boolean hasNextDouble(String string) { return false;}
 public float inFloat() { return 0f;}
 public float inFloat(String string) { return 0f;}
 public boolean hasNextFloat() { return false;}
 public boolean hasNextFloat(String string) { return false;}
 public int inInt() { return 0;}
 public int inInt(String string) { return 0;}
 public boolean hasNextInt() { return false;}
 public boolean hasNextInt(String string) { return false;}
 public long inLong() { return 0L;}
 public long inLong(String string) { return 0L;}
 public boolean hasNextLong() { return false;}
 public boolean hasNextLong(String string) { return false;}
 public short inShort() { return 0;}
 public short inShort(String string) { return 0;}
 public boolean hasNextShort() { return false;}
 public boolean hasNextShort(String string) { return false;}
 public boolean ready() { return false;}
 public void close() { }
 private void tallfeil(String string) { }
 private void feil(String string) { }
 private int numTry() { return 0;}
 private String getCause(NumberFormatException numberFormatException) { return null;}
}


class Out  {

 // Fields
 static final String versjon = "ver.3.2 - 2006-08-28";

 // Constructors
 public Out() { }
 public Out(String string) { }
 public Out(String string, boolean _boolean) { }

 // Methods
 public void outln() { }
 public void out(String string) { }
 public void outln(String string) { }
 public void out(char _char) { }
 public void out(char _char, int _int) { }
 public void outln(char _char) { }
 public void outln(char _char, int _int) { }
 public void out(char _char, int _int, int _int2) { }
 public void outln(char _char, int _int, int _int2) { }
 public void out(int _int) { }
 public void outln(int _int) { }
 public void out(int _int, int _int1) { }
 public void outln(int _int, int _int1) { }
 public void out(int _int, int _int1, int _int2) { }
 public void outln(int _int, int _int1, int _int2) { }
 public void out(double _double) { }
 public void outln(double _double) { }
 public void out(double _double, int _int) { }
 public void outln(double _double, int _int) { }
 public void out(double _double, int _int, int _int2) { }
 public void outln(double _double, int _int, int _int2) { }
 public void out(double _double, int _int, int _int2, int _int3) { }
 public void outln(double _double, int _int, int _int2, int _int3) { }
 public void out(String string, int _int) { }
 public void outln(String string, int _int) { }
 public void out(String string, int _int, int _int2) { }
 public void outln(String string, int _int, int _int2) { }
 public void out(Object object) { }
 public void outln(Object object) { }
 public void close() { }
}




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

               HybelHus utsyn = new HybelHus("HaiHus.data");
               utsyn.kommandoløkke();

     } // avslutter metoden main
       } // avslutter klassen Oblig3

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

       class Hybel {

               Student leietager;
               int gang;
               char hybelBokstav;
               int hybel; // trengs til konvertering fra tall til bokstav
               String navn;
               double utestående;

               Hybel(int gangX, char hybelBokstavX, int hybelX, String navnX, double uteståendeX) {
       // konstruktør for klassen Hybel

                       gang = gangX;
                       hybel = hybelX;
                       hybelBokstav = hybelBokstavX;
                       navn = navnX;
                       utestående = uteståendeX;

                       leietager = new Student(navn, utestående);
               // leietager opprettes som et nytt objekt av Klassen Student. Tar imot relevant info

         } // avslutter konstruktøren for klassen Hybel
       } // avslutter klassen Hybel

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

       class Student {

               double saldo;
               String navn;

               Student(String navn, double utestående) { // konstruktør for klassen Student
                       this.navn = navn;

       /*  Kommandoen this gir en peker til innværende objekt
    *  Venstre side er  objektvariablen navn
    *  Høyre side er parameter til konstruktøren
    */
                       saldo = utestående;

         } // slutter konstruktøren for klassen Student
       } // slutter klassen Student

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

       class HybelHus {

               In tast = new In();

       // økonomi-data settes her for bruk til senere utregning
       double stromRegLeietager = 0;
       // settes som en double verdi til senere utregning

       int totaltAntallMåneder = 0;
       int antallHybelmånederMedTommeHybler = 0;
       double totalFortjeneste = 0;

       Hybel [][] hyblene = new Hybel[4][8];

               HybelHus (String filnavn) { // konstruktør for klassen HybelHus

               In filHaiHus = new In("HaiHus.data");

               int a = 0;

               while (a < 28) { // settes slik at den stopper etter å ha lest 28 linjer

                       String linje = filHaiHus.inLine();
                       String mønster = (";");
                       String [] hybelinfo = linje.split(mønster);
       // koder "lånt" fra side 111 i "Rett på Java"

                       int gang = Integer.parseInt(hybelinfo[0]);
                       char hybelBokstavX = hybelinfo[1].charAt(0);
                       int hybelX = (int) (hybelBokstavX - 'A');
                       String navn = hybelinfo[2].trim();
                       double uteståendeX = Integer.parseInt(hybelinfo[3].trim());

       /*  Forklaring på hva som skal lese fra fil:
        *  1: Integer.parseInt konverterer tekst til en heltallsverdi (side 109 i "Rett på Java")
        *  2: [1] definerer plassen den skal leses inn på.
        *     charAt referer til plassen en bokstav står på i en tekststreng
        *  3: (int) gjør char til en int-verdi, så kalt typekovertering
        *  4: kommandoen .trim returner en kopi av stringen
        */

                       hyblene[gang-1][hybelX] = new Hybel (gang, hybelBokstavX, hybelX, navn, uteståendeX);
       // oppretter så et nytt objekt av klassen Hybel

                       System.out.println(hyblene[gang-1][hybelX].gang + ";" + hyblene[gang-1][hybelX].hybelBokstav + ";" +
                       hyblene[gang-1][hybelX].navn + ";" + hyblene[gang-1][hybelX].utestående + ";");

                       a++; // oppdaterer a, slik at den til slutt når 28 gjennomlesninger

       } // avlsutter while

                       totaltAntallMåneder = filHaiHus.inInt(";");
                       antallHybelmånederMedTommeHybler = filHaiHus.inInt(";");
                       totalFortjeneste = filHaiHus.inInt(";");

                       System.out.println(totaltAntallMåneder + ";" + antallHybelmånederMedTommeHybler + ";" + totalFortjeneste + ";");

       /*  Skriver så den siste infoen som skal være på HaiHus.data:
        *  - totalt antall mnd programmet har vært i virksomhet
        *  - totalt antall mnd med totalt antall uleide hybler
        *  - total fortjeneste for Ærlige Johans Husleiesystem
        */

       } // avslutter konstruktøren for klassen HybelHus

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

       void kommandoløkke() { // startet metoden kommandoløkke, som her styrer menyen

               int valg = 1; // setter valg lik 1 og ikke 0, så ikke programmet avsluttes før det starter;)

               while (valg != 0) { // kjører while-løkken helt til valg ikke tilsvarer 0

                               System.out.println("");
                               System.out.println("                []___    ");
                               System.out.println("               /    /\\  ");
                               System.out.println("              /____/__\\ ");
                               System.out.println("              |[][]|  |  ");
                               System.out.println("              |____|__|  ");
                               System.out.println("");
                               System.out.println(" *** ÆRLIGE JOHANS HUSLEIESYSTEM ***");
                               System.out.println("");
                               System.out.println(" Du har følgende valgmuligheter:");
                               System.out.println("");
                               System.out.println("  0.) AVSLUTT");
                               System.out.println("  1.) VIS LISTE OVER LEDIGE HYBLER");
                               System.out.println("  2.) REGISTRER NY LEIETAGER");
                               System.out.println("  3.) REGISTRER FRIVILLIG FLYTTING AV LEIETAGER");
                               System.out.println("  4.) MÅNEDSKJØRING AV HUSLEIE MED STRØM");
                               System.out.println("  5.) REGISTRER BETALING FRA LEIETAGER");
                               System.out.println("  6.) SJEKK OM NOEN LEIETAGERE SKAL KASTES UT");
                               System.out.println("  7.) VIS TOTALRAPPORT");
                               System.out.println("");
                               System.out.print(" Velg kommando: ");

               valg = tast.inInt();

               switch(valg) { //starter switch-setningen som styrer menyvalgene

               case 0: // brukerens valg nr.1
                       System.out.println("");
                       System.out.println("*** TAKK FOR AT DU TOK TID TIL Å SJEKKE UT ÆRLIGE JOHANS HUSLEIESYSTEM ***");
                       System.out.println("");
                       avslutt();
               break;

       case 1: // brukerens valg nr.2
                       System.out.println("");
                       System.out.println("*** VIS LISTE OVER LEDIGE HYBLER ***");
                       System.out.println("");
                       listeOverLedigeHybler();
               break;

       case 2: // brukerens valg nr.3
               System.out.println("");
                       System.out.println("*** REGISTRER NY LEIETAGER ***");
                       System.out.println("");
                       regNyLeietager();
               break;

               case 3: //brukerens valg nr.4
                       System.out.println("");
                       System.out.println("*** REGISTRER FRIVILLIG FLYTTING AV LEIETAGER *** ");
                       System.out.println("");
                       regFlytting();
               break;

               case 4: //brukerens valg nr.5
                       System.out.println("");
                       System.out.println("*** MÅNEDSKJØRING AV HUSLEIE MED STRØM ***");
                       System.out.println("");
                       mndHusleieMedStrom();
               break;

               case 5: //brukerens valg nr.6
                       System.out.println("");
                       System.out.println("*** REGISTRER BETALING FRA LEITAGER ***");
                       System.out.println("");
                       regBetaling();
               break;

               case 6: //brukerens valg nr.7
                       System.out.println("");
                       System.out.println("*** SJEKK OM NOEN LEIETAGERE SKAL KASTES UT ***");
                       System.out.println("");
                       sjekkUtkasting();
               break;

               case 7: //brukerens valg nr.8
                       System.out.println("");
                       System.out.println("*** SKRIV TOTALRAPPORT ***");
                       System.out.println("");
                       totalRapportForHusleiesystem();
               break;

               default: // dersom brukeren velger et tall som er større enn 7 eller mindre enn 0
                       System.out.println("");
                       System.out.println("DU HAR DESVERRE OPPGITT EN UGYLDIG VERDI!");
                       System.out.println("");

           } // avslutter switch
         } // avslutter while-løkke
       } // avslutter metoden kommandoløkke

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//  case 0: AVSLUTT
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

       void avslutt() {

               Out filHaiHus = new Out("HaiHus.data"); // gjør at infoen skrives til HaiHus.data

               for (int etg = 0; etg<hyblene.length; etg++) {
                       for (int hyb = 1; hyb<hyblene[etg].length; hyb++) {
       // doble for-løkker for å løpe gjennom arrayer

               filHaiHus.outln(hyblene[etg][hyb].gang + ";" + hyblene[etg][hyb].hybelBokstav + ";"
               + hyblene[etg][hyb].navn + ";" + (int) hyblene[etg][hyb].leietager.saldo + ";");
       // skriver info som trengs til HaiHus.data

         } // avslutter for1
       } // avslutter for2

               filHaiHus.outln((int) totaltAntallMåneder + ";" + (int) antallHybelmånederMedTommeHybler
               + ";" + (int) totalFortjeneste + ";");

               filHaiHus.close(); // etter all info er skrevet til HaiHus.data lukkes filen

       } // avslutter metoden avslutt

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//  case 1: VIS LISTE OVER LEDIGE HYBLER
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

       void listeOverLedigeHybler() {

               for (int etg = 0; etg<hyblene.length; etg++) {
                       for (int hyb = 1; hyb<hyblene[etg].length; hyb++) {

               if (hyblene[etg][hyb] != null && hyblene[etg][hyb].navn.equals("TOM HYBEL")) {

                       System.out.println(hyblene[etg][hyb].gang + " - " + hyblene[etg][hyb].hybelBokstav);

       /*  Kravet til if-setningen her er at dersom hybelene ikke er lik null
        *  (kan jo hende den synes det er gøy å rote nedover filen etter blanke tegn),
        *  og tekst-strengen er lik TOM HYBEL, så vises de hybler som innfrir kravene på skjerm
        *  nb! denne if-setningen vil bli flittig brukt utover i oppgaven, og blir derfor ikke nevnt mer
        */

                 } // avlsutter if
           } // avslutter for1
         } // avslutter for2
       } // avslutter metoden listeOverLedigeHybler

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//  case 2: REGISTRER NY LEIETAGER
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

       void regNyLeietager() {

               double innskudd = 0;
               double forskudd = 8000;
       // initialiserer de variabler som trengs i denne metoden

               System.out.println(" --------------------------------------------------------------------------- ");
               System.out.println("|nb!                                                                        |");
               System.out.println("|Vennligst tast inn riktige verdier ellers vil desverre programmet avslutte |");
               System.out.println("|Verdier for gang: 1-4                                                      |");
               System.out.println("|Verdier for gang: B-H (stor eller liten bokstav utgjør ingen forskjell)    |");
               System.out.println(" --------------------------------------------------------------------------- ");
               System.out.println("");

               System.out.print("Oppgi ønsket gang (1-4): ");
               int etg = tast.inInt();

               System.out.print("Oppgi ønsket hybel (B-H): ");
               tast.skipWhite();
               char hyb = tast.inChar();
               hyb = Character.toUpperCase(hyb);
               int hybX = (int) (hyb - 'A');

               /*  - Kommandoen toUpperCase() gjør at alle inntastede bokstaver blir satt til store bokstaver,
                *    slik at ikke a & A blir tolket som to forskjellige symboler
                *  - Kommandoen skipWhite() dropper enhver carriage return
                */

               System.out.print("Oppgi navnet på ny leietager: ");
               String navnPaaLeietager = tast.inLine();
               System.out.println("");

               if (hyblene[etg-1][hybX] != null && hyblene[etg-1][hybX].navn.equals("TOM HYBEL")) {

                       innskudd = hyblene[etg-1][hybX].leietager.saldo + forskudd;
       // innskudd settes nå som gammel verdi + forskuddet som blir innbetalt

                       hyblene[etg-1][hybX] = new Hybel(etg, hyb, hybX, navnPaaLeietager, innskudd);
       // oppretter så et nytt objekt av klassen Hybel (slik at konstruktøren tar imot riktig info)

                       System.out.println(navnPaaLeietager + " er nå registrert som eier av hybel " + etg + " - " + hyb);
                       System.out.println("Forskuddet på husleien som er på 8000 uqbarske kr er nå registrert!");
       // dersom alt skulle være i orden, vil denne meldingen vises

        } // avlsutter if1

               else {

                       System.out.println("Oppgitte hybel er desverre allerede utleid!");
       // dersom hybelen allerede er opptatt, vil denne feilmeldingen vises

         } // avlsutter else1

                       totalFortjeneste += 3000;
       // plusser 3000 uqbarske kroner til den eksisterende verdien av total fortjeneste

       } // avslutter metoden regNyLeietager

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//  case 3: REGISTRER FRIVILLIG FLYTTING AV LEIETAGER
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

       void regFlytting() {

               int ekspedisjonsGebyr = 800;
       // initialiserer her den variablen som treng i metoden, som er ekspedisjons gebyret

               System.out.println(" --------------------------------------------------------------------------- ");
               System.out.println("|nb!                                                                        |");
               System.out.println("|Vennligst tast inn riktige verdier ellers vil desverre programmet avslutte |");
               System.out.println("|Verdier for gang: 1-4                                                      |");
               System.out.println("|Verdier for gang: B-H (stor eller liten bokstav utgjør ingen forskjell)    |");
               System.out.println(" --------------------------------------------------------------------------- ");
               System.out.println("");


               System.out.print("Oppgi deres gang (1-4): ");
               int etg = tast.inInt();

               System.out.print("Oppgi deres hybel (B-H): ");
               tast.skipWhite();
               char hyb = tast.inChar();
               hyb = Character.toUpperCase(hyb);
               int hybX = (int) (hyb - 'A');

               System.out.print("Oppgi navnet på leietageren: ");
               String navnPaaLeietager = tast.inLine();
               System.out.println("");

               if ((navnPaaLeietager).equals(hyblene[etg-1][hybX].navn)) {
       // kravet til if-setningen her er at leietager må være like oppgitt gang & hybel

                       hyblene[etg-1][hybX].navn = "TOM HYBEL";
       // etter flytting er regisrert settes hybelen lik ubebodd igjen

                       System.out.println(navnPaaLeietager + ", har nå flyttet ut fra hybel " + etg + " - " + hyb);

                       hyblene[etg-1][hybX].leietager.saldo -= ekspedisjonsGebyr;
       // setter her at studentens saldo skal trekke fra ekspedisjons gebyret på 800 uqbarske kr

                       System.out.println("Ekspedisjonsgebyret på 800 uqbarske kr er nå trukket fra kontoen!");
                       System.out.println("Hybel " + etg + " - " + hyb + " sin nye konto er nå på: "
                       + hyblene[etg-1][hybX].leietager.saldo + " uqbarske kr");
       // dersom alt skulle være i orden, vil denne meldingen vises

               totalFortjeneste += ekspedisjonsGebyr;
       // ekspedisjonsgebyret betalt for utflyttingen går til den totale fortjenesten

       } // avslutter if

               else {

                       System.out.println("Oppgitte hybel tilhører ikke deg, eller så er den ikke utleid!");
       // dersom hybelen ikke er registrert på oppgitt info, vil denne feilmeldingen vises

         } // avlsutter else

       } // avslutter metoden regFlytting

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//  case 4: MÅNEDSKJØRING AV HUSLEIE MED STRØM
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

       void mndHusleieMedStrom() {

               for (int etg = 0; etg<hyblene.length; etg++) {
                       for (int hyb = 1; hyb<hyblene[etg].length; hyb++) {

               if (hyblene[etg][hyb] != null && hyblene[etg][hyb].navn.equals("TOM HYBEL")) {

                       totalFortjeneste -= 1000;
       // 1000 uqbarske kr. trekkes fra fortjenesten pr. tomme hybel pr. måned

       } // avlsutter if

               else if (hyblene[etg][hyb] != null && ! hyblene[etg][hyb].navn.equals("TOM HYBEL")) {

                       totalFortjeneste += 2000;
       // 2000 uqbarske kr. legges til fortjenesten for samtlige bebodde hybler

                       hyblene[etg][hyb].leietager.saldo -= 3000;
       // 3000 uqbarske kr. betales til Ærlige Johan pr. husleie

           } // avslutter else if
         } // avlsutter for 1
       } // avlsutter for 2

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       //  leser så inn fra strømregning og beregner husleie etter dette.

               final double prisPaaStromLysmegopp = 0.8;
       // Lysmegopp A/S krever 80 uqbarske øre pr. kWh. Settes som final fordi den er endelig

               final double prisPaaStromJohan = 2;

       /*  Johan krever 2 uqbarske kr. pr. kWh av studentene.
        *  Settes som en double verdi til senere utregning, og final fordi den er endelig
        */

               In filLysregning = new In("Lysregning.data");

               while(!filLysregning.lastItem()) {

                       String linjeY = filLysregning.inLine();
                       String mønster = (":");
                       String [] lysReginfo = linjeY.split(mønster);

                       int husNr = Integer.parseInt(lysReginfo[0]);
                       int gangY = Integer.parseInt(lysReginfo[1]);
                       char hybelBokstavY = lysReginfo[2].charAt(0);
                       int hybelY = (int) (hybelBokstavY - 'A');
                       double kWhForbruk = Integer.parseInt(lysReginfo[3]);
       // samme fremgangsmåte som for innlesning fra HaiHus.data

               if (hybelY == 0) { // tilsvarer fellesarealet (A)

                       totalFortjeneste -= (prisPaaStromLysmegopp * kWhForbruk);
       // prisen Ærlige Johan må betale for fellesarealet

       } // avslutter if

               else if (hyblene[gangY-1][hybelY] != null &&
               ! hyblene[gangY-1][hybelY].leietager.navn.equals("TOM HYBEL")) {

                       stromRegLeietager = kWhForbruk * prisPaaStromJohan;
       // det leietagerene må betale for bruk av strøm

                       hyblene[gangY-1][hybelY].leietager.saldo =
                       hyblene[gangY-1][hybelY].leietager.saldo - stromRegLeietager;
       // oppdaterer så studentenes saldo

                       totalFortjeneste += (prisPaaStromJohan - prisPaaStromLysmegopp) * kWhForbruk;
       // dette blir da hva Johan tjener på strømmen

       } // avslutter else if1

               else if (hyblene[gangY-1][hybelY] != null &&
               hyblene[gangY-1][hybelY].leietager.navn.equals("TOM HYBEL")) {

                       hyblene[gangY-1][hybelY].leietager.saldo -= (prisPaaStromJohan * kWhForbruk);
       // prisen blir lagt til den utestående saldoen for ubebodde hybler

         } // avslutter else if2
       } // avslutter while-løkke

               totaltAntallMåneder += 1;
       // oppdaterer antall måneder med 1 pr. månedskjøring av husleie

               System.out.println("Fortjenesten på Ærlige Johans Husleiesystem er nå på: " + totalFortjeneste + " uqbarske kr.");
               System.out.println("Denne fortjenesten er opptjent over: " + totaltAntallMåneder + " måneder");
               System.out.println("I løpet av denne perioden har " + antallHybelmånederMedTommeHybler + " hybler stått tomme");
       // dersom alt skulle være i orden, vil denne meldingen vises

       } // avslutter metoden mndHusleieMedStrom

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//  case 5: REGISTRER BETALING FRA LEIETAGER
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

       void regBetaling() {

               System.out.println(" --------------------------------------------------------------------------- ");
               System.out.println("|nb!                                                                        |");
               System.out.println("|Vennligst tast inn riktige verdier ellers vil desverre programmet avslutte |");
               System.out.println("|Verdier for gang: 1-4                                                      |");
               System.out.println("|Verdier for gang: B-H (stor eller liten bokstav utgjør ingen forskjell)    |");
               System.out.println(" --------------------------------------------------------------------------- ");
               System.out.println("");


               System.out.print("Oppgi deres gang (1-4): ");
               int etg = tast.inInt();

               System.out.print("Oppgi deres hybel (B-H): ");
               tast.skipWhite();
               char hyb = tast.inChar();
               hyb = Character.toUpperCase(hyb);
               int hybX = (int) (hyb - 'A');

               System.out.print("Oppgi beløpet du vil sette inn (bruk . og ikke , ved komma): ");
               double regInnbetaling = tast.inDouble();
               System.out.println("");

               if (hyblene[etg-1][hybX] != null && ! hyblene[etg-1][hybX].navn.equals("TOM HYBEL")) {

                       hyblene[etg-1][hybX].leietager.saldo += regInnbetaling;
       // oppdaterer leietagerns saldo fra gammel verdi til ny verdi ved den registrerte innbetalingen

                       System.out.println("Betaling er nå registret!");
                       System.out.println("Registret saldo er nå: " + hyblene[etg-1][hybX].leietager.saldo + " uqbarske kr");
       // dersom alt skulle være i orden, vil denne meldingen vises

       } //avslutter if1

               else {

                       System.out.println("Oppgitte hybel er ikke utleid!");
       // dersom hybelen allerede er opptatt, vil denne feilmeldingen vises

       } // avlsutter else

       } // avlsutter metoden regBetaling

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//  case 6: SJEKK OM NOEN LEIETAGERE SKAL KASTES UT
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

       void tilkallTorpedo (String hybID, String studentID, double krav) {
       // setter parameter verdien på metoden til å ta imot info jeg trener til Torpedo.txt

               Out filTorpedo = new Out("Torpedo.txt", true);
               filTorpedo.outln("");
               filTorpedo.outln("Måned: " + totaltAntallMåneder);
               filTorpedo.outln("~~~~~~~~~~~");
               filTorpedo.outln("Navn: " + studentID + " | hybel: " + hybID + " | krav: " + krav + " uqbarske kr.");
               filTorpedo.outln("");

               filTorpedo.close();
       // metoden tar så imot relevant info som skal sendes til torpedoen

       } // avslutter metoden tilkallTorpedo

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  void sjekkUtkasting() {

               double torpedoGebyr = 1000;
       // oppretter den variablen jeg trenger i denne metoden, altså torpedo gebyret

               for (int etg = 0; etg<hyblene.length; etg++) {
                       for (int hyb = 1; hyb<hyblene[etg].length; hyb++) {

               if (hyblene[etg][hyb] != null && ! hyblene[etg][hyb].navn.equals("TOM HYBEL")
                       && hyblene[etg][hyb].leietager.saldo <= 0) {

       /*  Kravet til if-setningen her er:
        *  At dersom hybelen er eid og konto er lik (eller mindre enn) 0,
        *  finner den ut hvilke studenter som ikke gjør opp for seg
        */

               char hybBokstav = (char) ('A' + hyb);
               int etgX = etg + 1; // settes for å finne riktig gangnr
               double krav = (-torpedoGebyr) + hyblene[etg][hyb].leietager.saldo;
       // oppdaterer gammel saldo til ny verdi når torpedogebyret er trukket fra

               String hybID = (etgX + " - " + hybBokstav);
               String studentID = (hyblene[etg][hyb].navn);

               System.out.println(studentID + " som er registrert som eier av hybel " +  hybID +
               ", med registrert saldo " + hyblene[etg][hyb].leietager.saldo + " må desverre finne seg i å bli kastet ut");
               System.out.println("");
       // dersom noen studenter ikke har gjort opp for seg, vil denne meldingen vises

               tilkallTorpedo (hybID, studentID, krav);

               hyblene[etg][hyb].navn = ("TOM HYBEL");
               hyblene[etg][hyb].leietager.saldo = 0;

       /*  Kaller så på metoden tillkallTorpedo (med den parameter verdien den trenger),
        *  setter saldoen til hybel lik 0, og gjør hybelen ledig (ved å kaste studenten ut)
        */

           } // avslutter if
         } // avslutter for1
       } // avslutter for2

       } // avslutter metoden sjekkUtkasting

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//  case 7: VIS TOTALRAPPORT
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

       void totalRapportForHusleiesystem() {

               System.out.println("Ærlige Johans Husleiesystem har så langt inntjent: " + totalFortjeneste + " uqbarske kr.");
               System.out.println("Ærlige Johans Husleiesystem har vært i virksomhet i: " + totaltAntallMåneder + " måneder");
               System.out.println("Ærlige Johans Husleiesystem har i løpet av denne perioden gått glipp av: " + antallHybelmånederMedTommeHybler + " husleier");
       // viser den infoen som er mest relevant for Ærlige Johan

       } // avslutter metoden totalRapportForHusleiesystem

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

} // avslutter klassen HybelHus



















Endret av java2
Lenke til kommentar
Videoannonse
Annonse

Emnetittelen i denne tråden er lite beskrivende for trådens innhold og det er derfor ingen god emnetittel. Jo bedre og mer beskrivende emnetittelen er, jo lettere er det for andre å skjønne trådens innhold og det vil være lettere å treffe den riktige forumbrukeren med det rette svaret. Ber deg derfor om å endre emnetittel slik at du unngår at en moderator stenger tråden. Vennligst forsøk å tenk på dette 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.

 

Tråden bryter også med tre-ords-regelen.

 

(Dette innlegget vil bli fjernet ved endring av emnetittel. Ikke kommenter dette innlegget, men ta gjerne og p_report.gif dette innlegget når tittelen er endret, så vil det bli fjernet.)

Lenke til kommentar
Gjest
Dette emnet er stengt for flere svar.
×
×
  • Opprett ny...