Methoden Klasse an Instanzmethode übergeben

  • Themenstarter Themenstarter noname102
  • Beginndatum Beginndatum
N

noname102

Gast
Hallo, ich sitze derzeit an einer Aufgabe im Laufe welcher ich eine Klasse an eine Methode übergeben soll. Leider scheitere ich unter Anderem an dieser Übergabe.
Zuerst die Aufgabe (es geht um eine "Flughafensimulation"):
1. Schreiben Sie eine Klasse Landebahn:
Jede Landebahn hat die int-Variable laenge und die boolean Variable istFrei. Das habe ich so gemacht:
[Java]
public class Landebahn
{
public int laenge;
public boolean istFrei;
}
[/Java]
2. Schreiben Sie die Klasse Tower:
Importieren Sie die Packages java.text.* und java.util.*.
Jeder Tower hat die Instanzmethode "landungsanfrage", welche ein Objekt vom Typ Landebahn übergeben wird.
Zusätzlich soll die Methode ausgeben, ob die angefragte Landebahn frei ist.
Bei dieser Aufgabe habe ich so angefangen:
[Java]
import java.text.*;
import java.util.*;

public class Tower
{
public boolean landungsanfrage (Class a[]) {
if (a.istFrei=true) {
System.out.println("Landebahn ist frei");
return true;
}
else {
System.out.println("Landebahn ist besetzt");
return false;
}
}
}
[/Java]
Bei der if-else-Schleife bin ich mir nicht sicher ob sie so funktionieren wird, aber wie gesagt, mein derzeitiges Proble ist es überhaupt die Klasse, welche im dritten Aufgabenteil initialisiert wird, zu übergeben.

3. Schreiben Sie die Klasse TowerDemo, in deren main-Methode sie einen Tower mit drei Landebahnen simulieren:
[Java]
public class TowerDemo
{
public static void main (String [] args)
{
Landebahn a[]= new Landebahn[3];
a[0].laenge = 123;
a[0].istFrei = true;
Tower b=new Tower();
b.landungsanfrage(a[0]);
}
}
[/Java]
Soweit mein dritter Aufgabenteil, ich initialisiere drei Landebahnen, weiße zuerst einmal Werte für eine Bahn zu (alles noch ohne Eingabe, diese möchte ich erst programmieren, wenn das Programm überhaupt funktioniert), dann initialisiere ich die Klasse Tower und möchte mit b.landungsanfrage(a[0]) die Klasse Landebahn übergeben.

Meine Probleme:
1. Wie übergebe ich eine Klasse an eine (Instanz-)methode?
2. Wie überprüfe ich aus der übergebenen Klasse einen bestimmten Wert?
 
Du übergibst den Wert, statt die Klasse.

Aber ich glaube ich habe noch nicht vollständig verstande, was man hier machen soll.

Eventuell so:

public boolean isFree(Landebahn a)

Du musst da nix mit Class machen
 
Ich habe die Klasse Tower jetzt so verändert, dass ein Feld Landebahn übergeben wird:
[Java]
public class Tower
{
public boolean landungsanfrage (Landebahn a[]) {
if (a[].istFrei=true) {
System.out.println("Landebahn ist frei");
return true;
}
else {
System.out.println("Landebahn ist besetzt");
return false;
}
}
}
[/Java]
Leider bekomme ich nun in der if-Schleife die Fehlermeldung, bei a[].istFrei class expected.

Und wenn ich in TowerDemo die Landebahn a[0] übergeben will kommt die Fehlermeldung: "Landungsanfrage (Landebahn[]) in Tower cannot be applied to (Landebahn)"
TowerDemo:
[Java]
public class TowerDemo
{
public static void main (String [] args)
{
Landebahn a[]= new Landebahn[3];
a[0].laenge = 123;
a[0].istFrei = true;
Tower b = new Tower();
b.landungsanfrage(a[0]);
}
}
[/Java]
 
du solltest nur Landebahn a übergeben, da du kein Feld übergibst.

und a[] ruft man sowieso nicht so auf. (Siehe Java Bücher)
 
Vielen Dank für dein Hilfe, jetzt funktioniert es!

Leider ist noch ein weiteres Problem aufgetaucht. Das Programm funktioniert nur solange in der main-Methoden absolut kein Feld vom Typ Landebahn enthalten ist. Als Fehler kommt dann: java.lang.NullPointerException.
So funktioniert es:
[Java]
public class TowerDemo
{
public static void main (String [] args)
{
Landebahn a= new Landebahn();
a.laenge = 123;
a.istFrei = false;
//Landebahn b = new Landebahn();
//b.istFrei = false;
Tower z= new Tower();
z.landungsanfrage(a);
}
}
[/Java]

So aber nicht:
[Java]
public class TowerDemo
{
public static void main (String [] args)
{
Landebahn a[]= new Landebahn[3];
a[0].laenge = 123;
a[0].istFrei = false;
Landebahn b = new Landebahn();
b = a[0];
Tower z= new Tower();
z.landungsanfrage(b);
}
}
[/Java]

Selbst wenn ich das Feld überhaupt nicht mit einbeziehe funktioniert es nicht:
[Java]
public class TowerDemo
{
public static void main (String [] args)
{
Landebahn a[]= new Landebahn[3];
a[0].laenge = 123;
a[0].istFrei = false;
Landebahn b = new Landebahn();
b.istFrei = false;
Tower z= new Tower();
z.landungsanfrage(b);
}
}
[/Java]

Die Tower-Klasse sieht derzeit so aus:
[Java]
public class Tower
{
public boolean landungsanfrage (Landebahn x) {
if (x.istFrei==true) {
System.out.println("Landebahn ist frei");
return true;
}
else {
System.out.println("Landebahn ist besetzt");
return false;
}
}
}
[/Java]
 
Java:
Landebahn a[]= new Landebahn[3];
Das legt dir nur ein Array für Landebahn Objekte an. Das Array ist aber noch leer. Du musst es erst mit Objekte füllen:

Java:
Landebahn[] a= new Landebahn[3];
a[0] = new Landebahn();
a[0].laenge = 123;
a[0].istFrei = false;
 
Und wieder so ein Fehler, Felder sind meine größte Schwäche...
Danke für den Hinweis, ich hoffe den Rest schaffe ich selbst.
 

Zurück
Oben