Gå til innhold

Trenger hjelp til oppgave


Anbefalte innlegg

Skrevet

public class Billett

{

private String navn;

private int fødselsår;

public Billett () //konstrukstør uten parameter

{

navn = "ukjent"; //tilordner en verdi til variabelen

}

public String hentNavn ()

{

return navn;

}

// endrer innholdet i navn, mutator

 

public void settNavn(String nyttNavn)

{

navn = nyttNavn;

}

 

public Billett(String nyttnavn, int fødeselsår)

{

navn = nyttnavn;

this.fødselsår = fødselsår;

}

public int hentAlder (int detteÅr)

{

int alder;

alder = detteÅr-fødselsår;

return alder;

}

 

 

public String finnAldersgruppe ()

{

String gruppe;

if(hentAlder > 67)

{

gruppe = "honnør";

}

if((hentAlder > 16) && (hentalder < 67))

{

gruppe = "voksen";

}

if (hentAlder < 16)

{

Gruppe = "barn";

}

return gruppe;

}

}

 

Når jeg compiler så får jeg: cannot find symbol - variable hentAlder

 

Noen som ser hva som er galt? Er klar over at det kan være noe med lokale variabler, men vet ikke hvordan jeg skal skrive det..

Videoannonse
Annonse
Skrevet

Kode som ikke er indentert er vanskelig å lese. Det er fullt mulig å poste indentert kode.

 

Ellers burde du finlese koden din, så finner du sikkert feilen. Tips: CASE

 

Werner

Skrevet

public class Person
{
// instance variables - replace the example below with your own
private String  navn;
private int	 fødselsår;
private int	 alder;
private int	 pris;

public Person(String navn, int fødselsår)
{
	int detteår = 2008;
	this.navn = navn;   // kopierer fra argument til objektets variabler
	this.fødselsår = fødselsår;
	alder = detteår - fødselsår;	// eksempel på beregning: beregner alder
}


public void settNavn(String nyttNavn)
{
	// void betyr at denne metoden har 'tom' retur
	navn = nyttNavn;	// kopierer fra argument til objektets variable
}


public String hentNavn(String nyttNavn)
{
	// returnerer innholdet i variabelen navn
	return navn;
}


public String hentAldersgruppe()
{
	// finner aldersgruppe ut fra alder
	String gruppe;

	if (alder >= 67)
	{
		gruppe = "honnør";
	}
	else if (alder >= 16)
	{
		gruppe = "voksen";
	}
	else
	{
		gruppe = "barn";
	}
	return gruppe;
}

 

Nå fungerer denne.

Neste steg er å legge inn en pris på hver gruppe, som feks 100kr på voksen og 50kr på barn og honnør.. Har prøvd noen forskjellige måter men får det ikke helt til.. Så om noen har noen forslag hadde det vært fint..

Skrevet

public class Billettautomat
{
// instance variables - replace the example below with your own
private String  navn;
private int	 fødselsår;
private int	 alder;
private int	 pris;


public Billettautomat(String navn, int fødselsår)
{
	int detteår = 2008;
	this.navn = navn;   // kopierer fra argument til objektets variabler
	this.fødselsår = fødselsår;
	alder = detteår - fødselsår;	// eksempel på beregning: beregner alder
}


public void settNavn(String nyttNavn)
{
	// void betyr at denne metoden har 'tom' retur
	navn = nyttNavn;	// kopierer fra argument til objektets variable
}


public String hentNavn(String nyttNavn)
{
	// returnerer innholdet i variabelen navn
	return navn;
}

public String hentPris(String nyPris)
{
	return pris;
}


public String hentAldersgruppe()
{
	// finner aldersgruppe ut fra alder
	String gruppe;

	if (alder >= 67)
	{
		gruppe = "honnør";
	}
	else if (alder >= 16)
	{
		gruppe = "voksen";
	}
	else
	{
		gruppe = "barn";
	}
	return gruppe;
}

 public int hentPris()
{
	String pris;

	if(gruppe = voksen)
	{
		pris = 200;
	}
	return pris;
}



public void skrivUtData()
{
	System.out.println("Utskrift av objektets data:\n\n" +
					   "Navn: " + navn + "\n" +
					   "Fødselsår: " + fødselsår + "\n" +
					   "Alder: " + alder + "\n" +
					   "Aldersgruppe: " + hentAldersgruppe());

 

Prøvde noe slik som dette.. Men siden jeg bare har hatt java i et par uker så er det mye prøving og feiling så vet jeg ikke helt hva jeg skal gjøre nå.. Lærte det med return og if else i dag, så har ikke forstått det helt ennå tror jeg..

Skrevet

Sammenligning av strenger er noe drit.

if (gruppe.equals("Voksen") {
  return 200;
}

 

Du har String pris, mens du egentlig vil ha et tall, nemlig int pris.

 

Obs: bølgeparantesene '{' skal være på samme linje som if-en slik som i mitt eksempel.

Skrevet

	{
	int pris;

	if (gruppe.equals("Voksen")) {
		return 200;
}
}

 

Nå testet jeg denne men får cannot find symbol - variable gruppe..

 

Føler jeg mangler noe viktig :D

Skrevet (endret)

	public int hentPris(hentAldersgruppe())
{
	String gruppe;

	if (gruppe.equals("voksen")) {
		return 200;
}
	if (gruppe.equals("honnør")) {
		return 100;
}
	if (gruppe.equals("barn")) {
		return 100;
}
	return pris;
}

 

Noe slikt?

Men nå får jeg <identifier expected> på øverste linjen. Hvorfor?

Endret av Frankh0104
Skrevet (endret)

public int hentPris()
   {
       String gruppe = hentAldersgruppe();

       if (gruppe.equals("voksen")) {
           return 200;
       }
       if (gruppe.equals("honnør")) {
           return 100;
       }
       if (gruppe.equals("barn")) {
           return 100;
       }
       return pris;
}

Kanskje dette hjelper? Du kan ikke deklarere en ny "String gruppe" uten å tilordne den noen verdi.

 

Edit: Angående "identifier": du lager metoden hentPris, du kaller jo ikke på den. Det du har gjort feil er å kalle på en metode inne i parameterlisten til hentPris, men det går jo ikke. Altså det kompilatoren mener med <identifier expected> er at du må oppgi datatypen til argumentet, f.eks: public int hentPris(String gruppe). Her er "gruppe" parameter til metoden hentPris. Du hadde skrevet: public int hentPris(hentAldersgruppe()), og det går ikke.

Endret av kjey
Skrevet

Ellers er det litt skummelt å sammenligne tekststrenger på den måten du gjør. Metoden equals() er nemlig case-sensitiv, og "Voksen" er ikke det samme som "voksen". Bruk equalsIgnoreCase() istedet.

 

Werner

Skrevet

Når vi er inne på det, så er det synd at ikke == funker på String. Er jo egentlig ingen grunn til det, dersom de bare hadde tatt i bruk flyweight pattern (eller hva det nå heter) fra starten av.

Skrevet

Nå sliter jeg litt med print info her..

Jeg vil gjerne printe info for alle gruppene men ikke ved å skrive inn prisen, i tilfelle jeg skifter prisen ved hjelp av settPris funksjonen..

	public void settPris(int nyPris)
{
	pris = nyPris;
}

 

Noen tips til hvordan jeg skal skrive det?

 

 

		public void printPris()
{
	System.out.println("Prisoversikt:\n\n" +
					   "Barn: " + "100" + "\n" +
					   "Voksen: " + "200" + "\n" +
					   "Honnør: " + "100");


}
}

Skrevet

Gitt at du vil gjøre dette objektorientert, og Java-stilmessig, lag en metode som returnerer en streng, og så skriv ut den.

 

public void printPris() {
  System.out.println(getPrisoversikt());
}

public String getPrisoversikt() {
  String s = "Prisoversikt:\n";
  s += "Barn: \t" + hentPris("barn") + "\n";
  s += "Voksen: \t" + hentPris("voksen") + "\n";
  s += "Honnør: \t" + hentPris("honnor") + "\n";
  return s;
}

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