Zahleingabe bei Stringeinlesung?

sakizzo

Mitglied
Hallo, kann mir jemand erklären, was mein Fehler ist?
Ich möchte, dass der Benutzer zum Beispiel eine Zahl eingeben kann, die in Dezimaldarstellung umgewandelt wird ODER den Text (in meinem Beispiel in Cap-Letters), der als String ausgegeben wird.
Es funktioniert ja mit einer Texteingabe, jedoch gibt es einen java.util.IllegalFormatConversionException Fehler, bei einer Zahleingabe.

Hier der Code:
import java.io.*;

public class format {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Bitte geben Sie einen Text ein");
String text = in.readLine();
if (isIntNumber(text)) {
System.out.printf("%d", text);
}
System.out.println("Ihr Text in Grossbuchstaben:");
System.out.printf("%S", text);
}

public static boolean isIntNumber(String num){
try {
Integer.parseInt(num);
} catch (NumberFormatException nfe) {
return false;
}
return true;
}
}
 
Moin,

wo genau tritt denn die Exception auf?
Du müsstest dies in der Konsole sehen können ....

Versuch mal ggf. anstelle des "printf" die Methode "println", sie setzt die Werte automatisch um!
Also

Java:
// statt: 
// System.out.printf("%d", text);
System.out.println("Die eingegebene Zahl: <" + text + ">");

// und 

System.out.println( "Ihr Text in Grossbuchstaben: <" + text + ">");

Gruß
Klaus
 
danke für die Antwort,...es hat auch geklappt, aber ich wollte die Zahl ja eigentlich formatieren, weshalb ich printf benutzt habe.
Kannst du mir erklären, warum es mit println funktioniert und mit printf nicht?
Danke, sakizzo

p.s. die Exception tritt im main auf
 
Zuletzt bearbeitet:
Hm - wenn ich das gerade richtig sehe, steckst du in das printf einen String rein, erwartest für %d aber eine Zahl - und das klappt nicht!

Versuch mal, deinen Text vorher in einen Double zu überführen (Double.parseDouble() oder so ähnlich), denn einen Double solltest du auch formatieren können :)
 
danke für die Antwort,...es hat auch geklappt, aber ich wollte die Zahl ja eigentlich formatieren, weshalb ich printf benutzt habe.
Kannst du mir erklären, warum es mit println funktioniert und mit printf nicht?
Nicht genau, da ich printf nicht verwende (also unter Java)
Aber hier sind auch (wohl bessere) Formatierungsoptionen für Java erklärt:
http://www.torsten-horn.de/techdocs/java-basics.htm im Abschnitt "Formatierung, Rundung"

p.s. die Exception tritt im main auf
Aha ... und wo dort - sprich: in welcher Zeile :confused:
Wie schon gesagt - da ist im Zweifel durch den Konsoleneintrag der Exception einsehbar!


BTW: nutze bitte die Code-Tags - entweder über den #-Button im Editor oder durch Klammerung von [_JAVA][_/JAVA] ohne Unterstriche!
Dadurch wird der gepostete Code um Längen lesbarer!

Gruß
Klaus
 
Zuletzt bearbeitet:
Es ist so, wie RoCMe schreibt. Die Variable "text" ist ein String. Der Formatkennzeichner %d ist halt für Zahlen da.

Java:
String text = in.readLine();
if (isIntNumber(text)) {
   System.out.printf("%d", text);
}

Ich empfehle mal die Lektüre von "Java ist auch eine Insel". Im spezillen 4.9 Formatieren von Ausgaben.
 
Zurück