Array in Int umwandeln

Status
Nicht offen für weitere Antworten.
J

JohnG

Gast
Hi,
habe ein int-Array mit variabler Länge und möchte nun das gesamte Array in ein einziges Integer umwandeln.

Also das Array ist z.B. {3 , 8 , 19 , 11} dann möchte ich einen Integer X = 381911

MfG
 

Landei

Top Contributor
Sollte ungefähr so gehen (aus'm Kopp):
Code:
StringBuilder sb = new StringBuilder();
for(int i : array) {
   sb.append(i);
}
int value = Integer.parseInt(sb.toString());
 

Ebenius

Top Contributor
Wenn Du sicher sein kannst, dass die Eingangswerte immer positiv sind und der aneinandergehängte Wert mit int darstellbar ist, dann ist diese Implementation meines Erachtens schöner:
Code:
/**
 * Concatenates all integer values in the given <code>int[]</code> array to
 * one integer, assuming all elements are <code>& 0</code> and the
 * concatenated value is <code>& Integer.MAX_VALUE</code>. In all other
 * cases the result is wrong.
 * 
 * @param array the integer elements to concatenate
 * @return the concatenated integer value
 */
private static int concatenateToInteger(int[] array) {
  int result = 0;
  for (int i = 0; i < array.length; i++) {
    int value = array[i];
    int multiplyWith;
    for (multiplyWith = 10; value >= multiplyWith;) {
      multiplyWith *= 10;
    }
    result = result * multiplyWith + value;
  }

  return result;
}

Ebenius
 

ARadauer

Top Contributor
tja man könnte es schon ausrechnen... die frage ist halt, ob man alle ausnahmen und sonderfälle berücksichtigt hat... eher nicht

die zweite frage ist, was macht Integer.parseInt? vermutlich auch ausrechnen...
Code:
 public static int parseInt(String s, int radix)
		throws NumberFormatException
    {
        if (s == null) {
            throw new NumberFormatException("null");
        }

	if (radix < Character.MIN_RADIX) {
	    throw new NumberFormatException("radix " + radix +
					    " less than Character.MIN_RADIX");
	}

	if (radix > Character.MAX_RADIX) {
	    throw new NumberFormatException("radix " + radix +
					    " greater than Character.MAX_RADIX");
	}

	int result = 0;
	boolean negative = false;
	int i = 0, max = s.length();
	int limit;
	int multmin;
	int digit;

	if (max > 0) {
	    if (s.charAt(0) == '-') {
		negative = true;
		limit = Integer.MIN_VALUE;
		i++;
	    } else {
		limit = -Integer.MAX_VALUE;
	    }
	    multmin = limit / radix;
	    if (i < max) {
		digit = Character.digit(s.charAt(i++),radix);
		if (digit < 0) {
		    throw NumberFormatException.forInputString(s);
		} else {
		    result = -digit;
		}
	    }
	    while (i < max) {
		// Accumulating negatively avoids surprises near MAX_VALUE
		digit = Character.digit(s.charAt(i++),radix);
		if (digit < 0) {
		    throw NumberFormatException.forInputString(s);
		}
		if (result < multmin) {
		    throw NumberFormatException.forInputString(s);
		}
		result *= radix;
		if (result < limit + digit) {
		    throw NumberFormatException.forInputString(s);
		}
		result -= digit;
	    }
	} else {
	    throw NumberFormatException.forInputString(s);
	}
	if (negative) {
	    if (i > 1) {
		return result;
	    } else {	/* Only got "-" */
		throw NumberFormatException.forInputString(s);
	    }
	} else {
	    return -result;
	}
    }
radix ist 10...

dritte frage: berücksichtigt diese methode mehr sonderfälle und ausnahmen als deine? vermutlich

vierte frage: würde diese methode besser getest? auf jeden fall!

ich würde auf Integer.parseInt setzen ;-)

Auf jeden fall macht es Sinn, sich mit dem Problem auseinander zu setzen und es sicht sicher nicht schlecht, wenn man sich überlegt ob mans selber machen kann.
Oft ist es aber in der Wirtschaft sinnvoller, vorgefertigte erprobte Methoden zu verwenden.
 

Templon

Bekanntes Mitglied
Ebenius hat gesagt.:
Wenn Du sicher sein kannst, dass die Eingangswerte immer positiv sind und der aneinandergehängte Wert mit int darstellbar ist, dann ist diese Implementation meines Erachtens schöner:
Code:
/**
 * Concatenates all integer values in the given <code>int[]</code> array to
 * one integer, assuming all elements are <code>& 0</code> and the
 * concatenated value is <code>& Integer.MAX_VALUE</code>. In all other
 * cases the result is wrong.
 * 
 * @param array the integer elements to concatenate
 * @return the concatenated integer value
 */
private static int concatenateToInteger(int[] array) {
  int result = 0;
  for (int i = 0; i < array.length; i++) {
    int value = array[i];
    int multiplyWith;
    for (multiplyWith = 10; value >= multiplyWith;) {
      multiplyWith *= 10;
    }
    result = result * multiplyWith + value;
  }

  return result;
}

Ebenius

Funktioniert nicht mit zahlen > 99. Warum nicht einfach Zahlen an String anhängen und dann Integer.parseInt() verwenden? ???:L
 

Ebenius

Top Contributor
Ging mir nur darum, dass ich normaler Weise nicht Strings aufbaue um Zahlen zu erhalten. Weil's mir einfach nicht so gut gefällt. Einschränkungen hab ich ja oben geschrieben. Ansonsten war's nur Sport. :)

Grüße, Ebenius
 

Ebenius

Top Contributor
Du möchtest also die Zahl 1004532132100 als Integer darstellen? Schonmal auf die Idee gekommen, dass die Zahl etwas größer ist als Integer.MAX_VALUE (2147483647)?

Dabei hab ich so schön Javadoc geschrieben...

Ebenius
 

coffeecup

Aktives Mitglied
mit "unsigned int" könte man einfach alle ins positive setzen

was natürlich nicht dein kleines Problem der Überschreitung des Int.Max wertes behebt;-)
 

Templon

Bekanntes Mitglied
""unsigned int" in java?" Hab ich mich auch gefragt =)

Man könnte aber z.B. eine IllegalArgument Exception werfen, falls man > Int.MAX oder < 0 geht, fals jemand zu faul/dumm war (so wie ich) die JavaDoc zu lesen =)
 

Ebenius

Top Contributor
Du wirst lachen, ich hatte die Version mit IllegalArgumentException schon fertig und hab sie dann wieder rausgeschmissen, weil ich davon ausging, dass der TO sicher nicht so komplizierte Sachen machen wollte. :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I JSON Datei in Array umwandeln Java Basics - Anfänger-Themen 1
C Array in String umwandeln Java Basics - Anfänger-Themen 5
W String Array in Int umwandeln um auf Zahl zu überprüfen Java Basics - Anfänger-Themen 4
N Unsymmetrisches mehrdimensionales Array in eindimensionales umwandeln Java Basics - Anfänger-Themen 2
J array in String umwandeln Java Basics - Anfänger-Themen 1
J array in String umwandeln Java Basics - Anfänger-Themen 3
J subStrings zu int Array umwandeln? Java Basics - Anfänger-Themen 19
M 1-Dimensionales Array in 2D Array umwandeln Java Basics - Anfänger-Themen 5
B zahlenfolge einlesen und in array umwandeln Java Basics - Anfänger-Themen 7
D Erste Schritte String Array in char Array umwandeln? Java Basics - Anfänger-Themen 1
A long Wert in hexadezimales Array umwandeln Java Basics - Anfänger-Themen 3
R String in ein Int Array umwandeln Java Basics - Anfänger-Themen 3
H Datentypen char array in int umwandeln Java Basics - Anfänger-Themen 9
T String in ein multidimensionales Array umwandeln Java Basics - Anfänger-Themen 4
B Werte aus einem Array umwandeln Java Basics - Anfänger-Themen 10
K ArrayList in double-Array umwandeln Java Basics - Anfänger-Themen 12
T Array auf einfaches Element umwandeln Java Basics - Anfänger-Themen 8
N Mehrdimensionalen int Array in int umwandeln Java Basics - Anfänger-Themen 8
M String in int umwandeln und in Array ablegen Java Basics - Anfänger-Themen 6
P ArrayList in Array umwandeln Java Basics - Anfänger-Themen 6
halla Character-Array in einen String umwandeln Java Basics - Anfänger-Themen 3
D Byte-Array zu Hex-String umwandeln Java Basics - Anfänger-Themen 3
G Array von Bytes in String umwandeln Java Basics - Anfänger-Themen 4
M Char Array mit Sonderzeichen in String umwandeln Java Basics - Anfänger-Themen 21
F LinkedList in Array umwandeln Java Basics - Anfänger-Themen 17
J String Array in Double Array umwandeln Java Basics - Anfänger-Themen 31
P Vector in ein Array umwandeln Java Basics - Anfänger-Themen 19
G 4-stelliges-Byte-Array in Integer umwandeln geht das? Java Basics - Anfänger-Themen 10
G Elemente in einem String-Array in einen String umwandeln Java Basics - Anfänger-Themen 2
A Zeichenkette teilen mit Substring oder Char Array Java Basics - Anfänger-Themen 14
A 6. Element aus einem Array zurückgeben Java Basics - Anfänger-Themen 1
A Was bedeutet bei einem Array "int a [MAX][MAX];", Java Basics - Anfänger-Themen 7
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
O 2 Dimensionales Array Java Basics - Anfänger-Themen 6
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
L Frage zum Array Java Basics - Anfänger-Themen 1
C 2D Array Ausgabe mit for-Schleife i,j Java Basics - Anfänger-Themen 4
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben