Gå til innhold

Anbefalte innlegg

Hei!

 

Trenger litt input! Skjønner ikke helt hvorfor null pointer eception oppstår i denne metoden.Jeg har opprettet objekter til tabellen, og metoden hentPatruljeNavn() fungerer om jeg kjører den i main utenfor denne metoden. Så hva er galt?

 

static int patruljeFinnes(String patrNavn, int tallObjekt)	{
	boolean funnet = false;
	int i = 0;

	while (i <= tallObjekt && !funnet){

		if (patrNavn.equals(patruljer[i].hentPatruljeNavn())) {	<--- her
			funnet = true;

		}
		i++;
	}
return i;
}

 

Her er all koden.

 

import java.util.Scanner;

class patrulje	{

//konstruktør
patrulje(int i)	{
	patruljeNavn = "ikkeregistrert";
	patruljePoster = 0;
	bestNavn = ""; 
	bestPoster = 0; 
}
patrulje(String patrNavn)	{
	patruljeNavn = patrNavn;
	patruljePoster = 0;
	bestNavn = ""; 
	bestPoster = 0; 
}
// statiske variabler


//feltvariabler
String patruljeNavn; //navn på patruljen
int patruljePoster; //hvor mange poster patruljen har funnet
String bestNavn; //person med flest poster
int bestPoster; //ant poster til best person

//instansmetoder
boolean registrer(String navn, int posterFunnet)	{
	patruljePoster = patruljePoster + posterFunnet;
	if (posterFunnet > patruljePoster)	{
		navn = bestNavn;
		posterFunnet = bestPoster;
	}
	return (posterFunnet > patruljePoster);
}

String hentPatruljeNavn()	{ return patruljeNavn; }

int hentTallPoster()	{ return patruljePoster; }

}

public class orientering	{

//Tabell som tar vare på informasjon om patruljene
static patrulje[] patruljer; 

static int patruljeFinnes(String patrNavn, int tallObjekt)	{
	boolean funnet = false;
	int i = 0;

	while (i <= tallObjekt && !funnet){

		if (patrNavn.equals(patruljer[i].hentPatruljeNavn())) { 
			funnet = true;

		}
		i++;
	}
return i;
}


static void flestPoster()	{
	int flestPoster = 0;
	for (int i = 0; i < patruljer.length; i++)	{
		if (patruljer[i].hentTallPoster() > flestPoster)
			flestPoster = patruljer[i].hentTallPoster();
	}
	System.out.println("Største antall poster for en patrulje er " + flestPoster);
	System.out.println("Dette ble funnet av patruljene under");
	for (int i = 0; i < patruljer.length; i++)	{
		if (patruljer[i].hentTallPoster() == flestPoster)
			System.out.println(patruljer[i].hentPatruljeNavn());
	}
}



public static void main(String[] args)	{ 

	String patruljeNavn;
	String navn;
	int sistPoster;
	int antPatruljer;

	Scanner tastatur = new Scanner(System.in);

	System.out.print("Hvor mange patruljer er det på leiren? ");
	antPatruljer = tastatur.nextInt();

	patrulje[] patruljer = new patrulje[antPatruljer]; // oppretter tabell for patruljene

	for (int i = 0; i < patruljer.length; i++)	{
		patruljer[i] = new patrulje("testpatrulje");
	}

	if (patruljer[0] == null)
		System.out.print("patruljer ikke opprettet");

	System.out.println("Du kan nå begynne å registrere");
	System.out.println("Avslutt med navn = ferdig");
	System.out.print("Skriv navn på speider, patrulje og antall funnet poster ");

	navn = tastatur.next();
	int nyPatrIndex = 0;
	while(!navn.equals("ferdig"))	{
		patruljeNavn = tastatur.next();
		sistPoster = tastatur.nextInt();


		if (patruljeFinnes(patruljeNavn, nyPatrIndex) == -1)	{
			//oppretter ny patrulje
			System.out.print("-1");
			patruljer[nyPatrIndex] = new patrulje(patruljeNavn);
			nyPatrIndex++;
			System.out.println("Ny patrulje opprettet");
		}
		//registrerer poster hos patruljen
			patruljer[(patruljeFinnes(patruljeNavn, nyPatrIndex))].registrer(navn, sistPoster);

		if (patruljer[(patruljeFinnes(patruljeNavn, nyPatrIndex))].registrer(navn, sistPoster))
			System.out.println("Ny bestenotering i patruljen");

		System.out.print("Skriv navn på speider, patrulje og antall funnet poster");

		navn = tastatur.next();

	} //slutt whileløkke

	System.out.println("Det er registrert speidere fra" + nyPatrIndex + " patruljer");

	flestPoster();

} //slutt main
}

Lenke til kommentar
Videoannonse
Annonse

Kan du printe stacktracen? Vanskelig å si akkurat hvor feilen ligger uten. I tillegg kan du gjerne lese litt opp på navnekonvensjoner for Java, som store bokstaver i klassenavn.

 

patruljer[] patruljer blir aldri initialisert:

Patruljer[] patruljer = new Patruljer[antallPatruljer];

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å
×
×
  • Opprett ny...