Hi,
ich finde die Codes in meinen JAVA-Buch sind nicht sehr einfach erklärt. Erst mal sorry, für die geballte Ladung Code:
Also diesen Code kapiere ich nicht:
Der Auto schreibt dazu folgendes:
Kann mir das bitte jemand übersetzen?
Danke!
Liebe Grüße
Reality
ich finde die Codes in meinen JAVA-Buch sind nicht sehr einfach erklärt. Erst mal sorry, für die geballte Ladung Code:
Code:
package fahrzeug; /*Diese Zeile ist für euch uninteressant. Da werden nur die Deklarationen von einem Packet geladen */
import java.io.*;
public class Auto extends StrassenFzg {
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 short plaetze;
public final static int VK_KM= 50000;
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;
}
}
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:
System.out.println("\nAuto anzeigen");
break;
case 2:
System.out.println("\nNeues Auto");
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();
if (anz_autos <AUTO_MAX && anz_autos>=0)
anz_autos=neues_auto(anz_autos);
else
System.out.println("Die Autosliste ist voll!");
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);
}
}
Also diesen Code kapiere ich nicht:
Code:
anz_autos=neues_auto(anz_autos); //Was soll das bewirken?????!!!!!!!!!
Der Auto schreibt dazu folgendes:
Wenn der Interpreter auf diese Anweisung trifft, arbeitet er zunächst die rechte Seite der Zuweisung ab. Das ist bei Zuweisung Operatoren immer der Fall, denn ansonsten könnte eine Aktion wie
summe=21+21;
niemals der Variblen summe der Wert 42 zuweisen. In unserem Fall wird allerdings keine arithmische Operation auf der rechten Seite der Zuweisung ausgeführt, sondern eine Methode aufgerufen. Diese bekommt an_autos al Parameter übergeben und legt genau an diesem Index einen neuen Objektverweis an. Anschließend wird der übergebene Wert um eins erhöht und zurückgelifert. Die Ausführung der Methode neues_auto() ist damit beendet und die rechte Seite der Zuweisung abgearbeitet- das Ergebnis dieser Abarbeitung ist die neue Anzahl der Auto-Instanzen und wird durch die Zuweisung in anz_autos abgelegt. Damit kann anz_autos ohne weitere Veränderung in main() wieder in einem Aufruf von neues_auto() verwendet werden.
Kann mir das bitte jemand übersetzen?
Danke!
Liebe Grüße
Reality