# Auf die Ziffern einer Zahl zugreifen



## Bastik1007 (10. Mai 2011)

Ich greife mit diesem Programm 
	
	
	
	





```
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?


----------



## XHelp (10. Mai 2011)

Weil es über die Integer-Grenze von 2147483647 hinausgeht, vermute ich mal...
Aber die Fehlermeldung anzugeben wäre natürlich sinnvoll gewesen.


----------



## faetzminator (10. Mai 2011)

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].


----------



## SlaterB (10. Mai 2011)

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


----------



## Bastik1007 (18. Mai 2011)

Ich habe mit 
	
	
	
	





```
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?


----------



## faetzminator (18. Mai 2011)

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]


----------



## Bastik1007 (18. Mai 2011)

Hey, das ist ja sehr cool  Dankeschön


----------

