Instanzen in einem Feld erzeugen

  • Themenstarter Themenstarter gast
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

gast

Gast
hi hab folgenden Code:

Code:
class FhGotchi
{
 private int alter;
 private double gewicht;
 private int laune;
 private char geschlecht;
 private int zunahme_gramm;
 private static FhGotchi [] kindergarten_ref;

 public FhGotchi (double gewicht, char geschlecht)
 {
  if (gewicht >= 10.0 && gewicht <= 50.0)
  {
   if (geschlecht == 'm' ||geschlecht == 'M' || geschlecht == 'W' || geschlecht == 'w')
   {
   this.gewicht = gewicht;
   this.geschlecht = geschlecht;
   }
  }
  else
  {
   this.gewicht = 25.0;
   this.geschlecht = 'm';
  }//end if
  this.alter = 0;
  this.laune = 5;
 }//end Konstruktor Fhgotchi

 public int getAlter ()
 {
  return alter;
 }//end method getAlter;

 public double getGewicht ()
 {
  return gewicht;
 }//end method getGewicht

 public int getLaune ()
 {
  return laune;
 }//end method getLaune

 public char getGeschlecht ()
 {
  return geschlecht;
 }//end method getGeschlecht

 public void fuettern (int kalorien)
 {
  if ( kalorien >= 1 && kalorien <= 100)
  {
   zunahme_gramm = kalorien / 6;
   gewicht = gewicht + zunahme_gramm;
   if ( (geschlecht == 'm' || geschlecht == 'M') && (laune > 1 && laune < 10) && kalorien > 60 )
    --laune;
  }
  else
   System.out.println ("Nein - das esse ich nicht!");
 }//end method fuettern

 public void altern ()
 {
  if (laune > 1 && laune <= 10)
   --laune;
  
  ++alter;
 }//end method altern


 public boolean spielen (int zahl)
 {
  if (laune >= 1 && laune < 10)
   ++laune;
  if (zahl % 3 == 0)
   return true;
  else
   return false;
 }//end method spielen


 public void kindergarten ()
 {
  kindergarten_ref = new FhGotchi [200];
  FhGotchi kind_ref;
  for (int i = 0; i != 99; i++)
  {
   kind_ref = new FhGotchi (20, 'w');
   kindergarten_ref[i] = kind_ref;
  }// end for i-----------> weiblich gotchis erzeugen

  for (int i = 100; i != 200; i++)
  {
   kind_ref = new FhGotchi (30, 'm');
   kindergarten_ref [i] = kind_ref;
  }//end for i ------------> männliche gotchis erzeugen 
 }//end method kindergarten


 public void kindergarten_fuettern ()
 {
  
  FhGotchi kinderGarten_ref;
  for (int i = 0; i != 199; i++)
  {
   kindergarten_ref = kindergarten_ref[i];
   kindergarten_ref.fuettern (45);
  }//end for i
 }//end method kindergarten_fuettern


}//end class Fhgotchi

bei den letzten zwei methoden bin ich mir irgendwie nicht sicher.
kindergarten ()
Ich soll 200 Gotchi's erzeugen, 100 männlich 100 weiblich

kindergarten_fuettern ()
Ich soll jedes Gotchi mit 45 kalorien füttern

aber irgendwie klappt das nicht
bekomme folgende Fehlermeldungen:


FhGotchi.java:106: incompatible types
found : FhGotchi
required: FhGotchi[]
kindergarten_ref = kindergarten_ref;
^

symbol : method fuettern(int)
location: class FhGotchi[]
kindergarten_ref.fuettern (45);

hoffe mir kann jemand helfen, das zeug ist bei uns prüfungsrelevant und irgendwie hab ich keinen peil 😳
 
die Fehlermeldungen sind aus der Welt, aber wenn ich die zwei letzten methoden nutzen will, mit dem code hier:

Code:
class Fh_test
{
 public static void main (String [] args)
 {
  char befehl;
  FhGotchi peter_ref = new FhGotchi (20, 'w');
  StdEingabe instream_ref = new StdEingabe ();
  

  do 
  {
   System.out.println ("Befehle \n\nX fuer Beenden \nA fuer Alter \nG für Gewicht \nL fuer Laune \nF fuer fuettern \nS fuer Spielen \nK fuer Kindergarten \n1 fuer Kindergarten futtern");
   befehl = instream_ref.liesCharacterSkipLine();

   switch (befehl)
   {
    case 'k':
    peter_ref.kindergarten ();
    break;
    case '1':
    peter_ref.kindergarten_fuettern ();
    break;
    default:
    break;
   }//end switch befehl
  }
  while (befehl != 'x');
 }//end method main
}//end Fh-test

dann kommt die Exception:


Exception in thread "main" java.lang.NullPointerException
at FhGotchi.kindergarten_fuettern(FhGotchi.java:107)
at Fh_test.main(Fh_test.java:21)
 
Hallo,

falls du das noch nicht geändert hast:

schreibe in deinen for-Schleifen nicht != 199, sondern <= 199. Auch 5000 ist ungleich 199,
aber so viele Gotchis hast du ja nicht erzeugt 😉

Lösche Zeile 107, welchen Sinn macht die?
Ändere Zeile 108 in kindergarten_ref.fuettern(45); denn du willst doch bestimmte
Elemente (Gotchis) im Array füttern.
 
Code:
 public void kindergarten ()
 {
  kindergarten_ref = new FhGotchi [200];
  FhGotchi kind_ref;
  for (int i = 0; i != 99; i++)
  {
   kind_ref = new FhGotchi (20, 'w');
   kindergarten_ref[i] = kind_ref;
  }// end for i-----------> weiblich gotchis erzeugen

  for (int i = 100; i != 200; i++)
  {
   kind_ref = new FhGotchi (30, 'm');
   kindergarten_ref [i] = kind_ref;
  }//end for i ------------> männliche gotchis erzeugen 
 }//end method kindergarten


 public void kindergarten_fuettern ()
 {
  
  
  for (int i = 0; i <= 199; i++)
  {
   kindergarten_ref[i].fuettern(45);
  }//end for i
 }//end method kindergarten_fuettern

so siehts jetzt aus, trotzdem kommt NullPointerException
 
:applaus: :applaus:

vielen vielen dank, keine Exceptions, sollte also laufen.
jetzt sollte ich für die klausur gewapnet sein

[schild=1 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]PoiSon rules!!![/schild]
 
Um mich mal selbst zu zitieren :roll:
PoiSoN hat gesagt.:
Auch 5000 ist ungleich 199, aber so viele Gotchis hast du ja nicht erzeugt
Du sagst kindergarten_ref = new FhGotchi[200]; hast also 200 Elemente (0 bis 199). Die for-Schleife
läuft und läuft... ein Ende hast du nicht angegeben. Wenn also versucht wird, Element 200 anzusprechen
- was es ja nicht gibt - dann knallts... Kleiner gleich (<=) läuft nur bis zum angegebenen Wert, dann
ist die Schleife abgearbeitet.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben