# String Zahlenkette einzeln in Array



## elve (26. Mai 2011)

Hallo,

ich hab grad ne Aufgabe bei der ich es irgednwie schaffen muss (zumindest denk ich, dass ich so ein Stück der Lösung näher kommen könnte) eine Zahlenkette ( zum Beispiel 3214 ) einzeln in ein Array zu machen. Also so, dass 3 den index 0, 2 den index 1 usw. hat. 

Ich weiß zwar wie man eine Zahl nem Array zuweist , aber ich weiß nicht wie ich an die einzelnen Ziffern der Zahl komme.


Wäre lieb, wenn ihr mir helfen könntet.

LG


----------



## ARadauer (26. Mai 2011)

Gibt mehrer Möglichkeiten...

zb


```
public static void main(String[] args) {
      String zahlen = "3214";
      int[] ziffern = new int[zahlen.length()];
      for(int i = 0; i < zahlen.length(); i++){
         char c = zahlen.charAt(i);
         ziffern[i] = Integer.parseInt(Character.toString(c));
      }      
      System.out.println(Arrays.toString(ziffern));
   }
```
man könnte auch irgendwie mit potenzen herum rechnen oder statt dem parseInt mit dem char wert von 'A' rechnen... aber so finde ich kann mans gut nachvollziehen....


----------



## eleve (26. Mai 2011)

Könntest du mir noch kurz erklären, was da im einzelnen gemacht wird?

Hab es damit grad versucht, aber ich bin mir unsicher, was gemacht wird und hab es vermutlich falsch angewendet.

Danke!


----------



## faetzminator (26. Mai 2011)

An Stelle von 
	
	
	
	





```
ziffern[i] = Integer.parseInt(Character.toString(c));
```
 könnte man auch 
	
	
	
	





```
ziffern[i] = c - '0';
```
 machen, da der char [c]'0'[/c] einer math. [c]0[/c] entspricht und man damit den Wert einfach subtrahieren kann.


----------



## ARadauer (26. Mai 2011)

eleve hat gesagt.:


> Könntest du mir noch kurz erklären, was da im einzelnen gemacht wird?
> 
> Hab es damit grad versucht, aber ich bin mir unsicher, was gemacht wird und hab es vermutlich falsch angewendet.
> 
> Danke!



Was verstehst du den nicht?

(Man merkt dass, das Semester zu ende geht)


----------



## eleve (26. Mai 2011)

Wieso geht das Semester zu Ende?



Also ich hab das jetzt nochmal nachgeschaut und drüber gesucht.

Aber immer wenn ich es verwende dann kommt in der Zeile:

 char c = zahlen.charAt(i);


immer 

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Type mismatch: cannot convert from String to int


ansonsten würde ich eigentlich denken, dass ich es verstanden hab.


Viele Grü´ße!


----------



## ARadauer (26. Mai 2011)

bei char c = zahlen.charAt(i); kommt der fehler? poste mal deinen ganzen code...


----------



## eleve (26. Mai 2011)

```
public class Checksum {
	public static void main(String[] args) {
			zahl = convert(args[0]);
			System.out.print(zahl);
		

	private static int convert(String zahl) {
		
		int y=zahl.length();
		
		int meinArray []=new int [y];
		
		
		 
	              for(int i = 0; i < meinArray.length; i++){
	                char c = meinArray.charAt(i);
	                meinArray[i] = Integer.parseInt(Character.toString(c));
	            }
		
		return zahl;
	}
```


----------



## Zeeu (26. Mai 2011)

du willst den inhalt von meinArray_ in c kopieren, und dann den inhalt von c auf int casten um ihn wieder in meinArray zu kopieren ?
da meinArray vom Typ ist ist, sollten dort doch auch integer werte enthalten sein, ergibt für mich grad keinen sinn.
Des weiteren, hast du meinArray zwar erstellt, mit der Anzahl von zahlt.length elementen, aber die die elemente selber, dürften alle leer sein, oder hab ich da nen denkfehler ?_


----------



## ARadauer (26. Mai 2011)

mein code

```
char c = zahlen.charAt(i);
```
schau mal was zahlen bei mir ist

dein code

```
char c = meinArray.charAt(i);
```
schau mal was meinArray bei dir ist...


----------



## Zeeu (26. Mai 2011)

```
public class Checksum {
    public static void main(String[] args) {
            int[]zahl = convert(args[0]);
            for(int a : zahl){ System.out.print(a);}
        
    }
    private static int[] convert(String zahl) {
                
        int meinArray [] = new int [zahl.length()];
        
                  for(int i = 0; i < meinArray.length; i++){
                    meinArray[i] = Integer.parseInt(Character.toString(zahl.charAt(i)));                    
                  }
        
        return meinArray;
    }
 }
```
jetzt wird der methode ein String objekt übergeben, dieses wird element für element in ein int Array geparst, welches an die main zurück gegeben wird.


----------



## Crian (27. Mai 2011)

faetzminator hat gesagt.:


> An Stelle von
> 
> 
> 
> ...



Ich meine mich dunkel zu erinnern, dass es Zeichensätze gab, wo die Ziffern 0 bis 9 nicht in beisammen standen oder unterbrochen waren. Das ist natürlich nicht sehr sinnvoll, aber bei sowas könnte man auf exotischen Systemen ein schwer zu findendes Problem bekommen.


----------



## faetzminator (27. Mai 2011)

Crian hat gesagt.:


> Ich meine mich dunkel zu erinnern, dass es Zeichensätze gab, wo die Ziffern 0 bis 9 nicht in beisammen standen oder unterbrochen waren. Das ist natürlich nicht sehr sinnvoll, aber bei sowas könnte man auf exotischen Systemen ein schwer zu findendes Problem bekommen.



Wirklich :autsch: ? Aber du weisst nicht gerade, was für ein Charset das war/ist?


----------



## Crian (27. Mai 2011)

Ich glaube ich hab das verwechselt mit den Buchstaben, bei denen man sich darauf bei NBCDIC nicht verlassen konnte, die Zahlen scheinen auch dort geordnet und beieinander zu liegen.


----------

