Hi,
ich arbeite mit meinem JAVA-Buch und da schreibt der Auto ein relativ großes Programm nieder mit dem man Autos verwalten kann.
Wegen der Unübersichtlichkeit blick ich nicht mehr ganz durch, wo ich anscheinend auch einen Fehler übersehen habe:
StrassenFZG, habe ich jetzt hier nicht gepostet, ist unwichtig.
So, wenn ich nun kompiliere, läuft alles glatt, wenn ich aber dann im Menü "2" eingebe, dann kommt einer Fehlermeldung:
Was kann das sein?!
Liebe Grüße
Reality
ich arbeite mit meinem JAVA-Buch und da schreibt der Auto ein relativ großes Programm nieder mit dem man Autos verwalten kann.
Wegen der Unübersichtlichkeit blick ich nicht mehr ganz durch, wo ich anscheinend auch einen Fehler übersehen habe:
Code:
package fahrzeug;
import java.io.*;
public class Auto extends StrassenFzg {
public short plaetze;
public final static int VK_KM= 50000;
public static int anz_autos=0;
public Auto(){
anz_autos++;
}
public Auto(String k_bez, short k_geschw, short k_plaetze){
bez=k_bez;
geschw=k_geschw;
plaetze=k_plaetze;
anz_autos++;
}
public boolean eingeben(){
InputStreamReader daten=new InputStreamReader(System.in);
BufferedReader eingabe;
eingabe= new BufferedReader(daten);
try{
System.out.print("Bezeichnung: ");
bez=eingabe.readLine();
System.out.print("Sitzplaetze: ");
plaetze=Short.parseShort(eingabe.readLine());
System.out.print("Geschwindigkeit: ");
geschw=Short.parseShort(eingabe.readLine());
return true;
}catch (Exception e)
{
return false;
}
}
public boolean anzeigen() {
System.out.println("\nDas Auto ist ein "+bez);
System.out.println("Es hat "+plaetze+" Sitze.");
System.out.println("Der Top-Speed: "+geschw);
if(verliehen)
System.out.println("Es ist verliehen.");
else
System.out.println("Es ist nicht verliehen.");
return true;
}
public String list_eintrag(){
String text;
text= bez+", "+plaetze+" Sitzplaetze, "+geschw+" km/h Hoechstgeschwindigkeit";
if(verliehen)
text=text+" *";
return text;
}
}
Code:
import java.io.*;
import fahrzeug.*;
public class CarControl {
static int anz_autos=0;
static final int AUTO_MAX= 50;
static Auto[] auto_liste= new Auto[AUTO_MAX];
public static void main(String[] args){
short auswahl;
BufferedReader eingabe= new BufferedReader(
new InputStreamReader(System.in));
do{
//erst mal das Menue ausgeben
System.out.println("\nCarControl - die objektorientierte Fahrzeugverwaltung");
System.out.println("======================================================");
System.out.println("\nHauptmenue");
System.out.println("\n[1] Autos anzeigen");
System.out.println("\n[2] Neues Auto");
System.out.println("\n[0] Programm beenden");
try{
//versuchen, die Benutzereingabe zu lesen
System.out.print("\nAuswahl: ");
auswahl=Short.parseShort(eingabe.readLine());
//Benutzereingabe verarbeiten
switch (auswahl){
case 1:
liste_anzeigen(anz_autos);
break;
case 2:
if (anz_autos <AUTO_MAX && anz_autos>=0){
anz_autos=neues_auto(anz_autos);
}
else
System.out.println("Die Autosliste ist voll!");
break;
case 0:
System.out.println("\nBis bald...");
break;
default:
System.out.println("\nFalsche Eingabe!");
}
}catch (Exception e) //falsche Eingabe??
{
auswahl= Short.MIN_VALUE;
System.out.println("Nur ZAHLEN eingeben!");
}
}while(auswahl !=0);
}
static int neues_auto(int auto_nr){
anz_autos=neues_auto(anz_autos); //Was soll das bewirken?!
auto_liste[anz_autos]=new Auto();
System.out.println("====================");
auto_liste[auto_nr]= new Auto();
while(auto_liste[auto_nr].eingeben()==false){
System.out.println("Fehlerhafte Eingabe!");
}
System.out.println("Neues Auto angelegt.");
return (auto_nr+1);
}
static void liste_anzeigen(int auto_nr){
System.out.println("==========\n");
for(int i=0; i<auto_nr;i++){
System.out.print("["+(i+1)+"] ");
System.out.println(auto_liste[i].list_eintrag());
}
}
}
StrassenFZG, habe ich jetzt hier nicht gepostet, ist unwichtig.
So, wenn ich nun kompiliere, läuft alles glatt, wenn ich aber dann im Menü "2" eingebe, dann kommt einer Fehlermeldung:
java.lang.StackOverflowError
at CarControl.neues_auto(CarControl.java:56)
at CarControl.neues_auto(CarControl.java:56)
at CarControl.neues_auto(CarControl.java:56)
at CarControl.neues_auto(CarControl.java:56)
at CarControl.neues_auto(CarControl.java:56)
....
etc.
Was kann das sein?!
Liebe Grüße
Reality