Ich glaube kaum, dass du dein Programm später über die main Methode starten kannst, die du implementiert hast.
Deine Methode sollte nachher besser so aussehen:
Java:
publicstaticvoidmain(String[] args){/* ... */}
Nachdem du dein Programm auf der Konsole gestartet und dabei Parameter übergeben hast, stehen ebendiese Parameter in deiner args Variablen zur Verfügung. args[0] ist der erste, args[1] der zweite Parameter usw. Den Methoden
Java:
Integer.parseInt(String s)
oder
Java:
Double.parseDouble(String s)// für Kommazahlen
kannst du die einzelnen Parameter übergeben, sie dann parsen lassen und einer Variablen zuweisen, um dann damit weiterzurechnen.
@fjordschritt: Schön. Und? Hast du dir die Fehlermeldungen genau angeguckt? Weißt du, wie das Grundgerüst einer Java-Applikation überhaupt aussieht? Ich glaube kaum, dass jemand Lust hat, alles von Null zu erklären; dafür gibt es im Internet viel zu viel Literatur, als dass es das wert wäre.
publicclassMain{/**
* @param args the command line arguments
*/publicstaticvoidmain(String[] args){doubleGesamtpreis=Double.parseDouble(args[0]);doubleAnzahlung=Double.parseDouble(args[1]);doubleRate pro Monat=Double.parseDouble(args[2]);doubleLaufzeit in Monaten=Double.parseDouble(args[3]);}}
Nun habe ich die Parameter Eingabe, wie sieht es jetzt mit der Berechnung der Differenz zwischen Barzahlungspreis und Gesamtpreis bei Ratenzahlung aus?
Bei Ratenzahlungen zahlt man oft mehr, als wenn man direkt vorab einen Gesamtpreis bar bezahlt. Schreiben Sie ein Programm, welches vier Zahlen in der unten angegebenen Reihenfolge als Parameter beim Programmstart aus der Konsole u ̈bergeben bekommt:
• Gesamtpreis bei Barzahlung • Anzahlung bei Ratenzahlung • Rate pro Monat bei Ratenzahlung • Laufzeit in Monaten bei Ratenzahlung
Das Programm soll die Differenz zwischen Barzahlungspreis und Gesamtpreis bei Ratenzahlung ausgeben. Ebenfalls soll berechnet werden, bei welchen Raten man keinen Verlust/keinen Gewinn machen wu ̈rde. Die Ergebnisse der Berechnungen mu ̈ssen auf 2 Nachkommastellen gerundet auf der Konsole ausgegeben werden. Hinweis: Die Klasse des Programms muss InstallmentCalculator heißen.
Das ist mein Programm, läuft alles sehr gut, seht Ihr aber irgendwo evtl Fehler?!
Java:
importjavax.swing.JOptionPane;//Import der BibliotheksklassepublicclassInstallmentCalculator{// Klasse Installment Calculatorpublicstaticvoidmain(String[] args){StringGesamtpreis=JOptionPane.showInputDialog("Gesamtpreis");// Oeffnet ein EingabefeldDouble g=Double.parseDouble(Gesamtpreis);StringAnzahlung=JOptionPane.showInputDialog("Anzahlung");//Oeffnet ein EingabefeldDouble a=Double.parseDouble(Anzahlung);StringRate=JOptionPane.showInputDialog("Monatliche Rate");//Oeffnet ein EingabefeldDouble r=Double.parseDouble(Rate);StringLaufzeit=JOptionPane.showInputDialog("Laufzeit");//Oeffnet ein EingabefeldDouble l=Double.parseDouble(Laufzeit);doubleDifferenz;// Sagt, dass eine Variable den Datentyp Double besitzt, also FließkommazahldoubleAusgeglichen;// Sagt, dass eine Variable den Datentyp Double besitzt, also FließkommazahlDifferenz=g-a-r*l;// Wird beschrieben, aus was sich die Differenz zusammensetztdouble d1=Differenz*100;int d2=(int)d1;double end=(double)d2/100;JOptionPane.showMessageDialog(null,"Differenz"+end);//Ausgabe der Differenz in einem extra FensterAusgeglichen=(g-a)/l;double d3=Ausgeglichen*100;int d4=(int) d3;double endausgleich=(double)d4/100;JOptionPane.showMessageDialog(null,"Welche Rate gleicht aus"+endausgleich);//Ausgabe der Differenz in einem extra Fenster}}
Ja: Du überprüfst nicht, ob der Anwender überhaupt etwas in die Dialoge eingegeben hat. Was aber eigentlich auch egal ist, denn damit schrammst du so oder so an der Aufgabenstellung vorbei, die ja ausdrücklich verlangt, dass die Werte bei Programmstart über die Konsole übergeben werden (Stichwort: Programmargumente).
Fehler sehe ich keine.
Ansonsten: der Abbruch der Dialoge wird nicht behandelt (weiss nicht, ob das relevant ist)
man könnte den Code noch einkürzen
Java:
importjavax.swing.JOptionPane;publicclassInstallmentCalculator{publicstaticvoidmain(String[] args){double g, a, r, l;
g =Double.parseDouble(JOptionPane.showInputDialog("Gesamtpreis"));
a =Double.parseDouble(JOptionPane.showInputDialog("Anzahlung"));
r =Double.parseDouble(JOptionPane.showInputDialog("Monatliche Rate"));
l =Double.parseDouble(JOptionPane.showInputDialog("Laufzeit"));JOptionPane.showMessageDialog(null,"Differenz "+((int)((g - a - r * l)*100))/100d);JOptionPane.showMessageDialog(null,"Welche Rate gleicht aus "+((int)(((g - a)/ l)*100))/100d);}}
Fehler sehe ich keine.
Ansonsten: der Abbruch der Dialoge wird nicht behandelt (weiss nicht, ob das relevant ist)
man könnte den Code noch einkürzen
Java:
importjavax.swing.JOptionPane;publicclassInstallmentCalculator{publicstaticvoidmain(String[] args){double g, a, r, l;
g =Double.parseDouble(JOptionPane.showInputDialog("Gesamtpreis"));
a =Double.parseDouble(JOptionPane.showInputDialog("Anzahlung"));
r =Double.parseDouble(JOptionPane.showInputDialog("Monatliche Rate"));
l =Double.parseDouble(JOptionPane.showInputDialog("Laufzeit"));JOptionPane.showMessageDialog(null,"Differenz "+((int)((g - a - r * l)*100))/100d);JOptionPane.showMessageDialog(null,"Welche Rate gleicht aus "+((int)(((g - a)/ l)*100))/100d);}}
Der Vorposter sagte ja, dass ich das nicht beachte, wie ich die Eingabe zu tätigen habe. gebe sie ja in einer Dialogbox ein, die ich ja selber erstellt habe. Laut Aufgabenstellung " Schreiben Sie ein Programm, welches vier Zahlen in der unten angegebenen Reihenfolge als Parameter beim Programmstart aus der Konsole übergeben bekommt"
Hm, unter Eclipse wäre das unter Run -> Run Configuration. Wo die das unter NetBeans versteckt haben, weiß ich nicht.
Wieso bist du überhaupt auf die Dialoge ausgewichen - du hattest doch schon eine fast fertige Lösung mit Argumentübernahme aus der Kommandozeile:
fjordschritt hat gesagt.:
Java:
publicclassMain{/**
* @param args the command line arguments
*/publicstaticvoidmain(String[] args){doubleGesamtpreis=Double.parseDouble(args[0]);doubleAnzahlung=Double.parseDouble(args[1]);doubleRate pro Monat=Double.parseDouble(args[2]);doubleLaufzeit in Monaten=Double.parseDouble(args[3]);}}
Nur noch die Leerzeichen entfernen und du hast deine benötigten Informationen.
Kleiner Verbesserungsvorschlag von meiner Seite dazu: Teste, ob alle Argumente vorhanden sind.
Java:
publicstaticvoidmain(String[] args){if(args.length ==4){// Hier Werte parsen, Berechnungen ausführen und das Ergebnis auf der Kommandozeile ausgeben.}else{System.out.println("Benutzung: java Programmname arg1 arg2 arg3 arg4");}}
also langsam frag ich mich echt was euer prof da treibt scheinst ja nicht der einzige zu sein der probleme mit der aufgabe hat. oder ist diese aufgabe so verbreitet?
edit: für netbeans Run->Set Project Configuration->Customize und da unter Argumente halt z.B 100 50 30 5
Zu meiner Lösung, ich muss also die aray's benutzen. Wie setze ich die am besten da ein?! Etwa so? Da gibt er mir aber einen Fehler aus!
Java:
publicclassInstallmentCalculator{publicstaticvoidmain(String[] args){double g, a, r, l;
g =Double.parseDouble(JOptionPane.showInputDialog("Gesamtpreis"));(args[0]);
a =Double.parseDouble(JOptionPane.showInputDialog("Anzahlung"));(args[1]);
r =Double.parseDouble(JOptionPane.showInputDialog("Monatliche Rate"));(args[2]);
l =Double.parseDouble(JOptionPane.showInputDialog("Laufzeit"));(args[3]);JOptionPane.showMessageDialog(null,"Differenz "+((int)((g - a - r * l)*100))/100d);JOptionPane.showMessageDialog(null,"Welche Rate gleicht aus "+((int)(((g - a)/ l)*100))/100d);}}
Naja, man sollte schon den entsprechenden Methoden die Parameter übergeben. Und die JOptionPanes brauchst Du gar nicht mehr, da sich das ganze auf der Konsole abspielen soll.
Kleine Frage nebenbei: Was habt ihr überhaupt schon einmal mit Java gemacht, bzw. habt ihr euch überhaupt schon einmal näher damit beschäftigt? Gleich vier Leute mit dem gleichen Problem, scheinbar keine Erfahrungen mit Arrays und Konsolen-I/O,...und ist das wirklich Uni oder doch (Berufs-)Schule?
das ist wirklich Uni, erstes Semster.. Das Problem ist, dass die Profs die Prüfungen umgestellt haben und man nun anstatt einer Klausur 10 Aufgaben hochladen muss. Und damit das ganze nicht zu einfach wird, wird halt fast nichts erklärt. Also learning by doing... aber wenn man davon total keine Ahnung hat, ist es schon verdammt schwer. Ich häng da ja auch so fest. Und das ist leider noch eine von den einfachen Aufgaben....