S
sonnenschein
Gast
Nachdem also mein Problem mit der Schleife so wunderbar gelöst wurde - hier mein eigentliches Problem: ich habe zwei Klassen: Auftrag und Auftragsverwaltung. Nun soll ich drei Objekte der Klasse Auftrag in der Klasse Auftragsverwaltung erstellen (bis dahin wunderbar) und dann einige Dinge mit ihnen durchführen. Meine Frage ist jetzt: wenn ich diese Objekte erstellt habe, ich dann die Attribute derselben ausgeben will, zeigt er mir dreimal die Attribute des letzten Objektes an. Ich gehe jetzt mal vom Beispiel print() aus - erstelle ich eine Methode
gibt er mir 3x Auftrag3 aus, versuche ich, drei verschiedene Methoden print1(), print2(), print3() zu entwickeln und die per Auftrag1.print1() usw. abzurufen, sagt er mir, daß er die Methode print1() in der Klasse Auftrag nicht findet, sehe ich ja auch ein, aber wie komme ich möglichst einfach ans gewünschte Ziel?
Hier die beiden Klassen:
und
danke schonmal
Code:
public void print() {
Auftrag1.print();
Auftrag2.print();
Auftrag3.print();
}
Hier die beiden Klassen:
Code:
public class Auftrag {
private static int Auftragnummer = 1;
private static String Auftraggeber = "_";
private static int Beginn = 1; //geplanter Auftragsbeginn Kalenderwoche
private static int Ende = 1; //geplantes Auftragende, Kalenderwoche
private static boolean Status = false; //false = nicht angefangen oder beendet
private static double Preis = 0.0;
private static double Rabatt = 0.0; //in Prozent
private static int RestlicheLaufzeit = 1;
private static String Auftragsstatus = "_";
private static double Endpreis = 0.0;
private static int aktuelleKW = 1;
public Auftrag() {
}
/**Konstruktor*/
public Auftrag(int Auftragnummer, String Auftraggeber, int Beginn, int Ende, boolean Status, double Preis, double Rabatt, int aktuelleKW) {
this.Auftragnummer = Auftragnummer;
this.Auftraggeber = Auftraggeber;
this.Beginn = Beginn;
this.Ende = Ende;
this.Status = Status;
this.Preis = Preis;
this.Rabatt = Rabatt;
this.aktuelleKW = aktuelleKW;
} //Konstruktor
/** die folgenden Methoden dienen dem Veraendern und Abrufen der oben festgelegten als private deklarierten Attribute
* Methoden: setAttribut(), getAttribut()
* @param Attribut
* @return this.Atrribut
*/
public void setAuftragnummer(int Auftragnummer) {
this.Auftragnummer = Auftragnummer;
} //getAuftragnummer()
public int getAuftragnummer() {
return this.Auftragnummer;
} //setAuftragnummer()
public void setAuftraggeber(String Auftraggeber) {
this.Auftraggeber = Auftraggeber;
} //getAuftraggeber()
public String getAuftraggeber() {
return this.Auftraggeber;
} //setAuftraggeber()
public void setBeginn(int Beginn) {
this.Beginn = Beginn;
} //getBeginn()
public int getBeginn() {
return this.Beginn;
} //getBeginn()
public void setEnde(int Ende) {
this.Ende = Ende;
} //setEnde()
public int getEnde() {
return this.Ende;
} //getEnde()
public void setStatus(boolean Status) {
this.Status = Status;
} //setStatus()
public boolean getStatus() {
return this.Status;
} //getStatus()
public void setPreis(double Preis) {
this.Preis = Preis;
} //setPreis()
public double getPreis() {
return this.Preis;
} //getPreis()
public void setRabatt(double Rabatt) {
this.Rabatt = Rabatt;
} //setRabatt()
public double getRabatt() {
return this.Rabatt;
} //getRabatt()
public void setAktuelleKW(int aktuelleKW) {
this.aktuelleKW = aktuelleKW;
} //setAktuelleKW()
public int getAktuelleKW() {
return this.aktuelleKW;
} //getAktuelleKW()
public void setRestlicheLaufzeit(int RestlicheLaufzeit) {
this.RestlicheLaufzeit = RestlicheLaufzeit;
} //setRestlicheLaufzeit()
public int getRestlicheLaufzeit() {
return this.RestlicheLaufzeit;
} //getRestlicheLaufzeit()
/** Die Methode gibt die restliche Laufzeit in Wochen zurück
* @param int aktuelleKW
* @return int RestlicheLaufzeit
*/
public static int getRestlicheLaufzeit(int aktuelleKW) { //gibt die restliche Laufzeit in Wochen zurück
if (Ende - aktuelleKW > 0) {
RestlicheLaufzeit = Ende - aktuelleKW;
} //if
else {
RestlicheLaufzeit = 0;
} //else
return RestlicheLaufzeit;
} //getRestlicheLaufzeit()
public void setAuftragsstatus(String Auftragsstatus) {
this.Auftragsstatus = Auftragsstatus;
} //setPreis()
public String getAuftragsstatus() {
return this.Auftragsstatus;
} //getPreis()
/** Die Methode gibt den Auftragsstatus zurück
* Rueckgabewerte: (nicht angefangen, angefangen, beendet, IN VERZUG)
* @param int aktuelleKW
* @return String Auftragsstatus
*/
public static String getAuftragsstatus(int aktuelleKW) {
String Auftragsstatus = "_";
if (Status = true) { //falls der Status auf angefangen steht
if (aktuelleKW - Ende < 0) { //das Ende ist spaeter als die aktuelle Kalenderwoche
Auftragsstatus = "angefangen";
} //if
else {
Auftragsstatus = "IN VERZUG"; //das geplante Ende ist bereits ueberschritten
} //else
} //if
else {
if (aktuelleKW - Beginn < 0) {
Auftragsstatus = "nicht angefangen";
} //if
else {
Auftragsstatus = "beendet";
} //else
} //else
return Auftragsstatus;
} //getAuftragsstatus()
public void setEndpreis(double Endpreis) {
this.Endpreis = Endpreis;
} //setPreis()
public double getEndpreis() {
return this.Endpreis;
} //getPreis()
/** Die Methode gibt den Endpreis zurück
* er berechnet sich aus dem Preis abzueglich des Rabattes
* @param keine
* @return double Endpreis
*/
public static double berechnePreis() {
double Endpreis = Preis - (Preis * Rabatt * 0.01);
return Endpreis;
} //berechnePreis()
/** Die Methode gibt die Attribute auf die Standardausgabe aus
* @param keine
* @return void
*/
public void print() {
Auftragsstatus = Auftrag.getAuftragsstatus(aktuelleKW);
Endpreis = Auftrag.berechnePreis();
RestlicheLaufzeit = Auftrag.getRestlicheLaufzeit(aktuelleKW);
System.out.println("Auftragnummer: " + Auftragnummer);
System.out.println("Auftraggeber: " + Auftraggeber);
System.out.println("Beginn: KW " + Beginn);
System.out.println("geplantes Ende: KW " + Ende);
System.out.println("Auftragsstatus: " + Auftragsstatus);
System.out.println("Restliche Laufzeit: " + RestlicheLaufzeit + " Wochen");
System.out.println("Preis: " + Preis + " Euro");
System.out.println("Rabatt: " + Rabatt + "%");
System.out.printf("Endpreis: %.2f Euro", Endpreis);
System.out.println("\n");
} //print()
} //class Auftrag
und
Code:
public class Auftragsverwaltung {
static BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); //ein Eingabegeraet wird benoetigt, hier initialisiert
double Einnahmen = 0.0;
double neuerRabatt1 = 0.0;
double neuerRabatt2 = 0.0;
double neuerRabatt3 = 0.0;
Auftrag Auftrag1 = new Auftrag(112244, "Meta Physik", 30, 37, true, 3562.30, 16.7, 35); //mittels Konstruktor aus der Klasse Auftrag.java wird der erste Auftrag erstellt
int Nr1 = Auftrag1.getAuftragnummer();
String Auftraggeber1 = Auftrag1.getAuftraggeber();
int Beginn1 = Auftrag1.getBeginn();
int Ende1 = Auftrag1.getEnde();
boolean Status1 = Auftrag1.getStatus();
double Preis1 = Auftrag1.getPreis();
double Rabatt1 = Auftrag1.getRabatt();
int RestlicheLaufzeit1 = Auftrag1.getRestlicheLaufzeit();
String Auftragsstatus1 = Auftrag1.getAuftragsstatus();
double Endpreis1 = Auftrag1.getEndpreis();
int aktuelleKW1 = Auftrag1.getAktuelleKW();
Auftrag Auftrag2 = new Auftrag(123456, "Emilie Galgenstreich", 13, 25, false, 376.98, 6.8, 35); //zweiter Auftrag mit Konstruktor der Klasse Auftrag.java
int Nr2 = Auftrag2.getAuftragnummer();
String Auftraggeber2 = Auftrag2.getAuftraggeber();
int Beginn2 = Auftrag2.getBeginn();
int Ende2 = Auftrag2.getEnde();
boolean Status2 = Auftrag2.getStatus();
double Preis2 = Auftrag2.getPreis();
double Rabatt2 = Auftrag2.getRabatt();
int RestlicheLaufzeit2 = Auftrag2.getRestlicheLaufzeit();
String Auftragsstatus2 = Auftrag2.getAuftragsstatus();
double Endpreis2 = Auftrag2.getEndpreis();
int aktuelleKW2 = Auftrag2.getAktuelleKW();
Auftrag Auftrag3 = new Auftrag(246552, "Carolus Magnus", 12, 32, true, 112873.24, 13.7, 35); //ddritter Auftrag mit Konstruktor der Klasse Auftrag.java
int Nr3 = Auftrag3.getAuftragnummer();
String Auftraggeber3 = Auftrag3.getAuftraggeber();
int Beginn3 = Auftrag3.getBeginn();
int Ende3 = Auftrag3.getEnde();
boolean Status3 = Auftrag3.getStatus();
double Preis3 = Auftrag3.getPreis();
double Rabatt3 = Auftrag3.getRabatt();
int RestlicheLaufzeit3 = Auftrag3.getRestlicheLaufzeit();
String Auftragsstatus3 = Auftrag3.getAuftragsstatus();
double Endpreis3 = Auftrag3.getEndpreis();
int aktuelleKW3 = Auftrag3.getAktuelleKW();
/** Die Methode rechnet die Einnahmen aus den Preisen aller Auftraege zusammen
* @param keine
* @return double Einnahmen
*/
public double berechneEinnahmen() {
Einnahmen = Preis1 + Preis2 + Preis3;
System.out.printf("Die Gesamteinnahmen betragen %.2f Euro", Einnahmen);
System.out.println("\n");
return Einnahmen;
} //berechneEinnahmen()
/** Die Methode erhoeht den Rabatt aller Auftraege um Prozent Prozent
* @param double Prozent
* @return void
*/
public void erhoeheRabatt(double Prozent) throws IOException {
Prozent = Double.parseDouble(in.readLine());
neuerRabatt1 = Rabatt1 + (Rabatt1*Prozent*0.01);
neuerRabatt1 = neuerRabatt1 * 100;
neuerRabatt1 = Math.round(neuerRabatt1);
neuerRabatt1 = neuerRabatt1 / 100;
neuerRabatt2 = Rabatt2 + (Rabatt2*Prozent*0.01);
neuerRabatt2 = neuerRabatt2 * 100;
neuerRabatt2 = Math.round(neuerRabatt2);
neuerRabatt2 = neuerRabatt2 / 100;
neuerRabatt3 = Rabatt3 + (Rabatt3*Prozent*0.01);
neuerRabatt3 = neuerRabatt3 * 100;
neuerRabatt3 = Math.round(neuerRabatt3);
neuerRabatt3 = neuerRabatt3 / 100;
System.out.println("Der neue Rabatt bei Auftrag "+ Nr1 + " betraegt " + neuerRabatt1 + "%");
System.out.println("Der neue Rabatt bei Auftrag "+ Nr2 + " betraegt " + neuerRabatt2 + "%");
System.out.println("Der neue Rabatt bei Auftrag "+ Nr3 + " betraegt " + neuerRabatt3 + "%");
} //erhoeheRabatt()
//ueberfluessige Mehthoden???
public void print1() {
System.out.println("Auftragnummer: " + Nr1);
System.out.println("Auftraggeber: " + Auftraggeber1);
System.out.println("Beginn: KW " + Beginn1);
System.out.println("geplantes Ende: KW " + Ende1);
System.out.println("Auftragsstatus: " + Auftragsstatus1);
System.out.println("Restliche Laufzeit: " + RestlicheLaufzeit1 + " Wochen");
System.out.println("Preis: " + Preis1 + " Euro");
System.out.println("Rabatt: " + Rabatt1 + "%");
System.out.printf("Endpreis: %.2f Euro", Endpreis1);
System.out.println("\n");
} //print1()
public void print2() {
System.out.println("Auftragnummer: " + Nr2);
System.out.println("Auftraggeber: " + Auftraggeber2);
System.out.println("Beginn: KW " + Beginn2);
System.out.println("geplantes Ende: KW " + Ende2);
System.out.println("Auftragsstatus: " + Auftragsstatus2);
System.out.println("Restliche Laufzeit: " + RestlicheLaufzeit2 + " Wochen");
System.out.println("Preis: " + Preis2 + " Euro");
System.out.println("Rabatt: " + Rabatt2 + "%");
System.out.printf("Endpreis: %.2f Euro", Endpreis2);
System.out.println("\n");
} //print2()
public void print3() {
System.out.println("Auftragnummer: " + Nr3);
System.out.println("Auftraggeber: " + Auftraggeber3);
System.out.println("Beginn: KW " + Beginn3);
System.out.println("geplantes Ende: KW " + Ende3);
System.out.println("Auftragsstatus: " + Auftragsstatus3);
System.out.println("Restliche Laufzeit: " + RestlicheLaufzeit3 + " Wochen");
System.out.println("Preis: " + Preis3 + " Euro");
System.out.println("Rabatt: " + Rabatt3 + "%");
System.out.printf("Endpreis: %.2f Euro", Endpreis3);
System.out.println("\n");
} //print3()
/** Die Methode gibt die Auftraege auf die Standardausgabe aus
* @param keine
* @return void
*/
public void print() {
Auftrag1.print1(); //Das funktioniert leider nicht, da ich mit einem Objekt aus der klasse Auftrag nicht auf die Methode print1 zugreifen kann...
Auftrag2.print2();
Auftrag3.print3();
} //print()
/** Die Methode liest von der Standardeingabe die Nummer eines Auftrages ein und gibt diesen Auftrag auf die Standardausgabe aus
* @param keine
* @return void
*/
public void info() throws IOException {
int auftrag = Integer.parseInt(in.readLine());
boolean bedingung = false;
while (bedingung) {
System.out.println("Der gewaehlte Auftrag existiert nicht, geben Sie bitte eine andere Nummer ein: ");
auftrag = Integer.parseInt(in.readLine());
if (auftrag != Nr1) {
bedingung = true;
} //if
else {
if (auftrag != Nr2) {
bedingung = true;
} //if
else {
if (auftrag != Nr3) {
bedingung = true;
} //if
else {
bedingung = false;
} //else
} //else
} //else
} //while
if (auftrag == Nr1) {
Auftrag1.print1();
} //if
else {
if (auftrag == Nr2) {
Auftrag2.print2();
} //if
else {
if (auftrag == Nr3) {
Auftrag3.print3();
} //if
} //else
} //else
} //info()
/** Main-Methode
* enthaelt einen Dialog zum Auswaehlen der Funktionen
* wird Wiederholt, bis der Benutzer das Programm explizit beendet
* @param keine
* @return void
*/
public static void main(String [] args) throws IOException {
double Prozent = 0.0;
int option = 1;
Auftragsverwaltung neu = new Auftragsverwaltung(); //ein neues Objekt der klasse Auftragsverwaltung wird erzeugt
do { //hier wird die Schleife begonnen
System.out.println("Bitte waehlen Sie eine der folgenden Optionen:"); //die einzelnen Optionen werden angefuehrt
System.out.println("1 - Ausgabe der Summe aller Einnahmen"); //Funktionsauswahl durch Eingabe von ganzen Zahlen
System.out.println("2 - Erhoehung des Rabattes fuer alle Auftraege");
System.out.println("3 - Ausgabe aller Auftraege");
System.out.println("4 - Ausgabe eines Auftrages nach Auftragsnummer");
System.out.println("0 - Beendigung des Programmes");
System.out.print("\n");
option = Integer.parseInt(in.readLine());
switch(option) { //Selektion durch switch()
case 1: neu.berechneEinnahmen();
break;
case 2: System.out.println("Bitte geben Sie die Rabatterhoehung in Prozent ein ");
neu.erhoeheRabatt(Prozent);
System.out.println("\n");
break;
case 3: neu.print();
break;
case 4: System.out.println("Bitte geben Sie die Nummer des gewuenschten Auftrags ein: ");
System.out.println(neu.Nr1 + " oder " + neu.Nr2 + " oder " + neu.Nr3);
neu.info();
break;
} //switch
} //do
while (option != 0); //hier wird bei der Eingabe '0' die Schleife terminiert
} //main-Methode
} //class Auftragsverwaltung
danke schonmal