Auf die Ziffern einer Zahl zugreifen

Bastik1007

Aktives Mitglied
Ich greife mit diesem Programm
Java:
 System.out.println("Gib ne 11 stellige zahl ein:");
		   int zahl = scan.nextInt(); //  Die vorgegebene Zahl 
		   
		   String s = "" + zahl;	// die Zahl als Zeichenkette
		   
		   for (int i=0;i<s.length();i++) {	// Schleife ueber alle Ziffern 
			   
			   int ziffer = Integer.parseInt("" + s.charAt(i));	// die Ziffer an Position i holen und in Variable "ziffer" merken

			   System.out.println("" + (i+1) + "te Ziffer: " + ziffer);		   // Ausgabe: "<Stelle>te Ziffer: <Ziffer>"
sobald ich aber mehr als 10 Ziffern eingebe, funktioniert es nicht mehr, jemand eine Lösung?
 
Weil es über die Integer-Grenze von 2147483647 hinausgeht, vermute ich mal...
Aber die Fehlermeldung anzugeben wäre natürlich sinnvoll gewesen.
 
Wenn du nur die Ziffern ausgeben musst, dann kannst du auch statt einem int ein String einlesen. Dann musst du aber natürlich auch später nicht in einen int umwandeln - ausser du willst überprüfen, ob es eine korrekte Zahl ist. Ansonsten gäbs für grosse Zahlen noch die Klasse [c]BigInteger[/c].
 
glücklicherweise muss man nicht die enge Grenze nehmen, Programmeingaben und jegliche sonstige Kommunikation sind eine Abstraktionsebene tiefer sowieso immer Strings,
lies scan.next(); ein, das spart auch die Umwandlung von int zurück nach String
 
Ich habe mit
Java:
		   String eingabe = scan.next();
		   
		   int a = eingabe.charAt(0);
		   int b = eingabe.charAt(1);
		   int c = eingabe.charAt(2);
		   int d = eingabe.charAt(3);
		   int e = eingabe.charAt(4);
		   int f = eingabe.charAt(5);
		   int g = eingabe.charAt(6);
		   int h = eingabe.charAt(7);
		   int i = eingabe.charAt(8);
		   int j = eingabe.charAt(9);
		   int k = eingabe.charAt(10);
		   
		   System.out.println(a);

probiert, auf die Zeichen zuzugreifen, aber wenn die Ausgabe ist im Fall von a "147", was ja eig 1 sein sollte... Wie kann ich die Ziffern denn so verwenden, dass ich mit den einzelnen rechnen kann?
 
Da hantierst du mit ASCII Codes. Also kannst du grundsätzlich einfach [c]'0'[/c] davon abziehen und du kriegst einen Wert 0-9 (sofern denn eine Zahl eingegeben wurde): [c]int a = eingabe.charAt(0) - '0';[/c]
 

Neue Themen


Zurück
Oben