Java Int/String Array zu int

FarCrysis

Cadet 3rd Year
Registriert
Nov. 2011
Beiträge
35
Guten Abend,

ich habe eine Frage bezüglich der Umwandlung von einem Array zu einem normalen Int.
Ich habe in einem String Array einen Haufen Zahlen gespeichert, diesen Haufen, habe ich dann in einen int Array umgewandelt und ausgegeben.

Code:
for(int i = 0; i < Zahl.length; i++) {
IntZahl[i]=Integer.parseInt(Zahl[i]);
}
		
for (int i = 0; i < IntZahl.length; i++) {
System.out.print(IntZahl[i]);
}

In diesem Array stehen Zahlen die ich (z.B. 0042) an einen int übergeben möchte, sodass dann für das Beispiel 0042 im int steht. Quasi so (Nur irgendwie dynamisch):

Code:
int x = 0042

Zerbreche mir schon seit längerem den Kopf darüber, denn selbst wenn ich 0042 an int übergebe (Einfach per Hand deklariert ..) ist dies für Java ja eine Oktazahl (Oder nicht?), was dann am Ende absoluter Krampf wäre.
Gäbe es denn eine Möglichkeit das "einfach aneinander zu reihen"?

So bekomme ich am Ende ja nur einen Wert des Arrays heraus, da er alle überschreibt ... u_n
Code:
for(int i = 0; i < Zahl.length; i++) {
int x=Integer.parseInt(Zahl[i]);
}
 
Code:
int[] intArray = new int[Zahl.length];

for(int i = 0; i < Zahl.length; i++) {
   intArray[i] = Integer.parseInt(Zahl[i]);
}


Mit diesem Code würdest du zumindest nicht immer den Wert wieder überschreiben, wenn das ist was du wolltest ^^.
 
"0042 wird zu: 42"

Code:
public class Test
{
   private int x;
    public Test()
    {
        String str ="0042";
        System.out.print(str+" wird zu: "+convert(str));
        
    }   
    public int convert(String str)
    {
        int in = Integer.parseInt(str);
        return in;

    }
}

Ist das nicht genau was du willst. Verstehe sonst das Problem nicht. Bei der Umwandlung passiert doch nichts?!
 
Ich verstehe auch nicht was du willst. Ein Array ist nunmal eine Liste und kein Skalar. Das kannst du nicht einfach zuweisen. Führende Nullen machen für einen Integer Wert auch kaum Sinn.
Was soll das Ergebnis sein?
@Peem: Hat er oben genauso selbst schon gemacht.
 
Zuletzt bearbeitet:
@Zimon
oben stehen aber nicht die Typen dabei deswegen ist das nicht klar. Weiß jetzt nicht obs eine Collection oder ein echter int array ist. Deswegen wollte ich das mit meinem Bsp klar machen ;)
 
Ich finde die Beschreibung auch recht verwirrend. Kann es sein, dass in deinem Zahl-Array {"0", "0", "4", "2"} steht und du willst das in die Zahl 42 umwandeln?
 
Sorry, hier stand Quatsch...

Es bleibt dabei, dass das hier reinstes Rätselraten ist.
 
Zuletzt bearbeitet:
Darlis schrieb:
Ich finde die Beschreibung auch recht verwirrend. Kann es sein, dass in deinem Zahl-Array {"0", "0", "4", "2"} steht und du willst das in die Zahl 42 umwandeln?

Das ist im Prinzip genau das, was ich tun möchte. Habe mich wohl nicht gerade passend ausgedrückt. Ist dies möglich? So ähnlich wie bei Strings mit Konkatenation oder muss ich mir einen Algorithmus ausdenken, welcher dies für mich tut?
 
Konkateniere den String und parse dann den Integer daraus.

{ "0", "0", "4", "2" } wird zu "0042" wird zu 42.
 
Oder du berechnest dir den int selbst mit einer Schleife, also das, was du im 3. Codeblock im Anfangspost versucht hast, nur fehlt da noch eine Kleinigkeit.
 
Darlis schrieb:
Oder du berechnest dir den int selbst mit einer Schleife, also das, was du im 3. Codeblock im Anfangspost versucht hast, nur fehlt da noch eine Kleinigkeit.

Da würde mehr als nur eine Kleinigkeit fehlen. Am einfachsten ist sicherlich das Erstellen eines Strings und anschließendes Umwandeln mit der bereits gefundenen Integer#parseInt Methode. String-Konkat in Schleifen ist nicht sonderlich performant in Java. Dafür gibt es StringBuilder. Aber für eine solche Übungsaufgabe ist das einerlei.
 
FarCrysis schrieb:
Das ist im Prinzip genau das, was ich tun möchte. Habe mich wohl nicht gerade passend ausgedrückt. Ist dies möglich? So ähnlich wie bei Strings mit Konkatenation oder muss ich mir einen Algorithmus ausdenken, welcher dies für mich tut?

Du könntest natürlich auch vom Ende des Arrays starten, die geparsten Zahlen mit der richtigen Zehnerpotenz multiplizieren und deinen Integer aufaddieren. Etwa:
n = 0, a=1
...
n += a * Integer.parseInt(Zahl)
a *= 10

Du läufst dabei natürlich schnell Gefahr, dass dein Integer überläuft. Ein Long ist natürlich eine Möglichkeit, hat aber das selbe Problem, nur später. Deshalb: http://docs.oracle.com/javase/6/docs/api/java/math/BigInteger.html
 
soares schrieb:
String-Konkat in Schleifen ist nicht sonderlich performant in Java. Dafür gibt es StringBuilder. Aber für eine solche Übungsaufgabe ist das einerlei.

Seit 1.6 (?) macht der Compiler aus String-Konkatenation ein StringBuilder mit entsprechenden append-Aufrufen. Nachvollziehbar, wenn man sich den Bytecode (mittels javap o.ä.) anschaut.
 
riDDi schrieb:
Du könntest natürlich auch vom Ende des Arrays starten, die geparsten Zahlen mit der richtigen Zehnerpotenz multiplizieren und deinen Integer aufaddieren. Etwa:
n = 0, a=1
...
n += a * Integer.parseInt(Zahl)
a *= 10

Du läufst dabei natürlich schnell Gefahr, dass dein Integer überläuft. Ein Long ist natürlich eine Möglichkeit, hat aber das selbe Problem, nur später. Deshalb: http://docs.oracle.com/javase/6/docs/api/java/math/BigInteger.html


Danke für diesen Hinweis!
Habe den Array nun nach Größe geordnet und dann den von dir vorgeschlagenen Algorithmus ausgeführt

Code:
	   int Tausch = 0; 

		       for (int i = 0; i < Zahl.length; i++)
		       {
		         for (int j = 0; j < Zahl.length - 1; j++ ) {
		           if (Zahl[j] >= Zahl[j+1])
		           {
		             Tausch = Zahl[j];
		             Zahl[j] = Zahl[j+1];
		             Zahl[j+1] = Tausch;
		           }
		         }
		       }

		       int y = 1000;
		       
		       for (int i = 3; i > -1; i--) {
		    	   int z = 0;
		    	   
		    	   z = Zahl[i] * y; 
		    	   
		    	   r += z;
		    	   y = y/10;
		       }

Danke für die schnelle und erstklassige Hilfe, darf geschlossen werden :)
 
Was ist mit dem java.text.format oder wie das heißt. Damit kann man doch formatieren, wie er die Daten ausgeben soll, also Formatiert mit zB ##00
 
Wie war das noch mit dynamisch? Mit deiner Lösung bist du auf genau 4 Zahlen begrenzt.

Code:
int x = 0;
for(int i = 0; i < Zahl.length; i++) {
    x = x * 10 + Integer.parseInt(Zahl[i]);
}
 
Zurück
Oben