Hallo,
ich muss gerade das programmieren mit Java lernen und komme auch Schritt für Schritt voran, aber bei einer Beispielaufgabe verstehe ich einen Teil nicht:
Aufgabenstellung:
Ermittlung des Kontostandes am Ende der Zinsperiode bei gegebenem
Zinssatz und Anfangskapital
Unterschiedliche Soll- und Habenzinssätze sind zu berücksichtigen.
Die Ermittlung ist für mehrere Konten vorzunehmen, wobei jedes Mal
Soll- und Habenzinssatz neu einzugeben sind. Variante: while-Schleife
...
System.out.println();
System.out.printf("Konto: %10s%nKontostand am Ende: %10.2f%n%n", kontobezeichnung, k1);
was bedeutet %10s%n und hinter Kontostand dann %10.2f%?
Wäre nett, wenn mir jemand helfen könnte.
Zitat von: Mr Orange am 10 November 2010, 14:26:53
System.out.println();
System.out.printf("Konto: %10s%nKontostand am Ende: %10.2f%n%n", kontobezeichnung, k1);
was bedeutet %10s%n und hinter Kontostand dann %10.2f%?
Wäre nett, wenn mir jemand helfen könnte.
Ohne jetzt wirklich Java-Kenntnisse zu haben, würde ich aus dem Wissen um andere printf-Varianten sagen
%10s bedeutet, das die erste Variable "kontobezeichnung", auf 10 Stellen gekürzt wird. Sprich %s steht für einen String, die Zahl davor für die verwendeten Stellen.
Das %10.2f wird die Ausgabe einer Floatzahl beschreiben (in dem Fall die Variable k1), die vermutlich auf 10 Vor- und 2 Nachkommastellen formatiert wird.
Die Beschränkung auf eine Stellenanzahl wird normalerweise vorgenommen, damit alle Ausgaben gleich aussehen, d.h. ohne Vorzeichen ist es meist rechts- mit einem "-" davor meist linksbündig ausgegeben.
Nen Tipp ins Blaue für die "%n": Zeielenumbrüche.
Ahhh! Das klingt auf jedenfall schlüssig. Wieder ein bißchen mehr Licht am Ende des Tunnels ;).
Da du dich bei printf-Varianten auskennst, nochmal eine Frage:
Warum schreibe ich manchmal "System.out.printf("Kontoblabla")"
und manchmal nur "System.out.print("Noch ein..")" :question:
Was hat das f für eine Bedeutung? In meiner Aufgabe:
System.out.println();
System.out.printf("Konto:..." "Kontostand am Ende:...", kontobezeichning, k1);
System.out.print("Noch ein Konto (J/N)..."); antwort = getString().charAt(0);
System.out.println();
Tip ins Blaue von einem der auszog, Python zu lernen: handelt es sich bei printf vielleicht um eine Methode, die einen String erst noch formatiert, bevor sie ihn ausgibt?
Nen print ist normalerweise für einfache Ausgaben ohne irgendwelche Variablen, in jedem Fall aber ohne irgendwelche Formatierungen.
Sobald man Variablen mit ausgibt, weiß man normalerweise nicht genau wie groß die werden. Damit das dann nachher nicht wie Kraut und Rüben aussieht, nimmt man printf, wo man halt jeder Variable ne feste Menge an Zeichen zubilligt. Macht aber auch erst Sinn, wenn man mehrere Zeilen ausgeben muß, da ja erst dann eine einheitlich Formatierung Vorteile bietet, aber die ist ja bei Dir aufgrund der while-Schleife eh gegeben.
Dementsprechend steht das f bei printf für formatted.
Alles klar!
Ich übe dann mal weiter. Vielen Dank für die Antworten!
Um es mal klugscheisserisch zu beantworten.
Javadoc: http://download.oracle.com/javase/6/docs/api/java/io/PrintStream.html#printf(java.util.Locale, (http://download.oracle.com/javase/6/docs/api/java/io/PrintStream.html#printf(java.util.Locale,) java.lang.String, java.lang.Object...)
Formatierungen: http://download.oracle.com/javase/6/docs/api/java/util/Formatter.html#syntax (http://download.oracle.com/javase/6/docs/api/java/util/Formatter.html#syntax)
:icon_mrgreen:
Ansonsten haben die Herren recht.
Gruß
n0NAMe
P.S.: Wenn du Text einlesen willst, dann würde ich dir nen Scanner-Objekt ans Herz legen.