String Zahlenkette einzeln in Array

  • Themenstarter Themenstarter elve
  • Beginndatum Beginndatum
E

elve

Gast
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
 
Gibt mehrer Möglichkeiten...

zb

Java:
   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....
 
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!
 
An Stelle von
Java:
ziffern[i] = Integer.parseInt(Character.toString(c));
könnte man auch
Java:
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.
 
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!
 
Java:
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;
	}
 
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 ?
 
mein code
Java:
char c = zahlen.charAt(i);
schau mal was zahlen bei mir ist

dein code
Java:
char c = meinArray.charAt(i);
schau mal was meinArray bei dir ist...
 
Java:
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.
 
An Stelle von
Java:
ziffern[i] = Integer.parseInt(Character.toString(c));
könnte man auch
Java:
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.

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

Zurück
Oben