Hallo Leute,
ich bin gerade dabei mir die Objektorientierte Programmierung beizubringen. Habe auch ein Buch dazu.
Nun habe ich folgende Fragen:
Was mache ich mit den folgenden Befehlen: ?
Java:
this.setSeiteA(Double.parseDouble(seiteA));<-- für was steht diese LINE was beinhaltet die alles?
was mache ich mit:setSeiteA(double seiteA)<-- was setze ich hier?
wie kann ich private gesetzte Attribute in der MainKlasse trotzdem abrufen?
das Double.parseDouble(seiteA) macht nichts anderes als den Wert der Variable seiteA auszulesen (Double sind Kommazahlen) und ihn zu einem double zumachen(seiteA) muss hier zwangsläufig ein String sein... dieser wird zu einem primitiven double gemacht
du beantwortest doch deine Fragen teilweiße mit der nächsten Zeile schon fast selbst
Java:
this.setSeiteA(Double.parseDouble(seiteA));
this bezieht sich auf das aufrufende Objekt kann aber in der Regel auch weggelassen werden. ich persönlich verwende es nur, wenn es Namensüberschneidungen von Konstruktorparametern und Instanzvariablen gibt.
Java:
setSeiteA(double seiteA)
damit setzt du den Wert vom gekapselten Attribut seiteA
wie kann ich private gesetzte Attribute in der Main Klasse trotzdem abrufen?
Naaa, mit so nem mist sollte man gar nicht erst anfangen.
Du solltest alles so eingeschränkt wie möglich halten. Du kannst aber in der Klasse einen getter-Methode bereitstellen die dir dann die variable zurückgibt.
hmm das verwirrt mich jetzt alles einbisschen. Könntet Ihr mir Beispiele dazu machen wäre echt nett.
Ich lege euch mal hier mein Programm vor was ich geschrieben habe.
Habe zuerst alles in eine Datei programmiert und jetzt teile ich das alles in drei Dateien auf:
1. Hauptprogramm 2. Berechnung 3. Abfragen
Könntet Ihr mir sagen ob ich das bis jetzt richtig gemacht habe?
Mein Problem ist es jetzt dass ich bei der Berechnung bzw. mit dem Switch Probleme habe.
Was mir auch klar ist, dass eine Variable anzahl in der Datei Abfrage liegt und ich diese jetzt in der Datei Berechnung benötige.
Nur weis ich nicht wie rufe ich die da rein?
Hier das Programm komplett:
Java:
importjava.io.*;publicclassGesamtpreis2{publicstaticvoidmain(String[] args)throwsIOException{doubleGesamtpreis=0,Anzahl=0,Fruestueck,Preis=0,Preis1;intMittagessen,Abendessen, auswahl, messen2;String str;BufferedReader reeder =newBufferedReader(newInputStreamReader(System.in));System.out.print("Bitte geben Sie die Anzahl ein: ");
str = reeder.readLine();Anzahl=Double.parseDouble(str);System.out.println("Bitte wählen Sie folgendes aus: ");System.out.println("Standard = s");System.out.println("Gehoben = g");System.out.println("Business = b");System.out.println("Präsident = p");String str1;
str1 = reeder.readLine();switch(str1.charAt(0)){case'p':Gesamtpreis=Anzahl*19.50;System.out.println("Präsidenten Menü");break;case's':Gesamtpreis=Anzahl*7.50;System.out.println("Standard Menü");break;case'g':Gesamtpreis=Anzahl*11.50;System.out.println("Gehobenes Menü");break;case'b':Gesamtpreis=Anzahl*14.50;System.out.println("Business Menü");break;default:System.out.println("Es wurde kein verfügbares Menü ausgewählt");System.exit(0);break;}System.out.println("Soll Mittagsessen dazu bestellt werden? ");System.out.println("Wählen Sie 1: für "+"Ja"+" und 2: für "+" Nein");String str2;
str2 = reeder.readLine();Mittagessen=Integer.parseInt(str2);boolean mitMittagessen =Mittagessen==1;if(mitMittagessen){Preis=Gesamtpreis+(22*Anzahl);System.out.println("Der Gesampreis beträgt: "+Preis+" Euro");}System.out.println("Soll Abendessen dazu gebucht werden?");System.out.println("1=Ja, 2=Nein");String str3;
str3 = reeder.readLine();Abendessen=Integer.parseInt(str3);boolean mitAbendessen =Abendessen==1;if(mitAbendessen){Gesamtpreis=Preis+(10*Anzahl);System.out.println("Der Gesampreis beträgt: "+Gesamtpreis+" Euro");}else{Gesamtpreis=Preis;System.out.println(Preis);}}}
importjava.io.*;publicclassAbfrage{publicint mittagessen;publicint abendessen;publicint auswahl;publicint messen;publicdouble anzahl=0;BufferedReader eingabe =newBufferedReader(newInputStreamReader(System.in));publicvoidabfrageanzahl()throwsIOException{System.out.print("Bitte geben Sie die Anzahl ein: ");String str1;
str1 = eingabe.readLine();
anzahl =Double.parseDouble(str1);System.out.println("Sie haben "+anzahl+" ausgewählt!");}publicvoidabfrageauswahl()throwsIOException{String str2;System.out.println("Bitte wählen Sie folgendes Menu aus: ");System.out.println("Standard = s");System.out.println("Gehoben = g");System.out.println("Business = b");System.out.println("Präsident = p");
str2 = eingabe.readLine();
auswahl =Integer.parseInt(str2);}}
3. Berechnung:
Java:
importjava.io.*;publicclassBerechnung{publicdouble gesamtpreis=0;publicdouble preis1=0;publicdouble preis2=0;publicvoidswitchberechnung()throwsIOException{switch(auswahl.charAt(0)){case'p':gesamtpreis=anzahl*19.50;System.out.println("Präsidenten Menü");break;case's':gesamtpreis=anzahl*7.50;System.out.println("Standard Menü");break;case'g':gesamtpreis=anzahl*11.50;System.out.println("Gehobenes Menü");break;case'b':gesamtpreis=anzahl*14.50;System.out.println("Business Menü");break;default:System.out.println("Es wurde kein verfügbares Menü ausgewählt");System.exit(0);break;}}}
Hier ist die Fehlerausgabe die ich erhalte beim kompilieren:
Code:
import java.io.*;
public class Berechnung
{
public double gesamtpreis=0;
public double preis1=0;
public double preis2=0;
public void switchberechnung()throws IOException
{
switch(auswahl.charAt(0))
{
case 'p':gesamtpreis=anzahl*19.50;
System.out.println("Präsidenten Menü");
break;
case 's':gesamtpreis=anzahl*7.50;
System.out.println("Standard Menü");
break;
case 'g':gesamtpreis=anzahl*11.50;
System.out.println("Gehobenes Menü");
break;
case 'b':gesamtpreis=anzahl*14.50;
System.out.println("Business Menü");
break;
default:System.out.println("Es wurde kein verfügbares Menü ausgewählt");
System.exit(0);
break;
}
}
}
Berechnung.java:10:12: cannot find symbol
symbol : variable auswahl
location: class Berechnung
switch(auswahl.charAt(0))
^
Berechnung.java:12:27: cannot find symbol
symbol : variable anzahl
location: class Berechnung
case 'p':gesamtpreis=anzahl*19.50;
^
Berechnung.java:15:27: cannot find symbol
symbol : variable anzahl
location: class Berechnung
case 's':gesamtpreis=anzahl*7.50;
^
Berechnung.java:18:27: cannot find symbol
symbol : variable anzahl
location: class Berechnung
case 'g':gesamtpreis=anzahl*11.50;
^
Berechnung.java:21:27: cannot find symbol
symbol : variable anzahl
location: class Berechnung
case 'b':gesamtpreis=anzahl*14.50;
^
5 errors
ja aber diese variable soll von der anderen datei eingelesen werden. dort habe ich doch einen bufferedreader erzeugt der diese einliest aber ich muss diesen wert in diese datei weitergeben.
Du solltest zwei Dinge machen - dein Aktivierungsmail bestätigen und progammieren lernen - programmieren hat NICHTS mit Java oder einer anderen Sprache, sondern mit Konzepten zu tun!
Ich kann dir das Buch "Java ist auch eine Insel" empfehlen, ein sehr gutes Buch, wo du alles finden wirst. Außerdem kannst du es hier kostenlos einsehen Online-Version oder hier kostenlos runterladen Offline-Version und wenn du es auf als Buch haben möchtest kannst du es hier bestellen.
Schau mal rein es lohnt sich.
Also wenn du Variablen aus der einen Klasse in eine anderen Nutzen willst, gibt es mehrere Möglichkeiten...eine ist z.B die benötigten Variablen mitzugeben:
Dann musst du natürlich noch deine Berechnungsklasse ändern...außerdem solltest du sprechende Namen, sowohl für Methoden, als auch für Variablen nutzen.
Und so einfach hast du deine Auswahl und deine Anzahl in deiner Berechungsklasse.
bei deiner Abfrage-Klasse sind nur die Methodennamen m.E. ein wenig sinnvoller gewählt...ansonsten wurde nichts geändert.
Es fehlt dir natürlich noch die Nachfrage nach Frühstück, Abendbrot und einige Ausgaben...aber ich hoffe damit kannst du erstmal ein wenig weiter arbeiten
Java:
importjava.io.*;publicclassAbfrage{publicint mittagessen;publicint abendessen;publicString auswahl;publicint messen;publicdouble anzahl =0;BufferedReader eingabe =newBufferedReader(newInputStreamReader(System.in));publicvoidabfrageAnzahlPersonen()throwsIOException{System.out.print("Bitte geben Sie die Anzahl ein: ");String str1;
str1 = eingabe.readLine();
anzahl =Double.parseDouble(str1);System.out.println("Sie haben "+ anzahl +" ausgewählt!");}publicvoidabfrageMenuWahl()throwsIOException{String str2;System.out.println("Bitte wählen Sie folgendes Menu aus: ");System.out.println("Standard = s");System.out.println("Gehoben = g");System.out.println("Business = b");System.out.println("Präsident = p");
str2 = eingabe.readLine();
auswahl = str2;}}
ach super genau das habe ich gelesen aber nicht richtig verstanden wie ich das anwenden kann. super super super danke das hat mir sehr geholfen gerade eben
Nein, hauptsächlich ist es dazu da um den Leuten die Angst vor den Satzzeichen zu nehmen
Aber bei konkret formulierten Fragen, wo die Lösung nicht auf den ersten 10 Seiten jedes Buches stehen, wird dir natürlich gerne geholfen, sofern Eigeninitiative vorhanden ist.
Wer einen Vergleich nicht verstehen will, schafft es auch nicht.
Wer nicht einmal die klarsten Fehlermeldungen einen Kompilers versteht, schafft es auch nicht.
Wer sich bis zum dritten Tag vor der Prüfung Zeit lässt und dann hyperventiliert, scha ...
Wer sich ins Zimmer setzt und meint der Lehrer bringe ihm was bei oder einfach so meint es sei alles klar, der scha ...
Ok, ich habe rein gar nichts dagegen mir von dir das Gegenteil beweisen zu lassen, aber wern nicht einmal weiss wie man eine Variable "in eine andere Klasse bekommt" hat wohl auch den Rest des Codes kaum selbst geschrieben und das nimmt vielen hier die Motivation - oder?
Ja ja, ich bin nicht nur kleinlich sondern auch ketzterisch.
Der hat möglicherweise schon nachgegeben und meldet sich hier nicht mehr - jedesmal wenn ich hier reinschaue weil ich etwas suche, wundere ich mich noch mehr.
In Anlehnung an ein Zitat IMO von Bill Gates: "Where du wanna go today?"
-> Java forum wehre are you going these days ???:L
(mich juken die vinger oben die felher zu markeiren aber ich lass es)
Der TS hatte fragen zu einem Sachverhalt, nicht mehr und nicht weniger.
Die restlichen "lerne erstmal programmieren" bzw. "deine Rechtschreibung ist schlecht" Beiträge helfen dem TS nicht, und dem Forum auch nicht.
Man muss ja nicht immer posten wenn man keine Antwort hat...