int[] -> string, string -> int[]

Crach

Mitglied
Hallo,

kann mir jemand tipps geben, wie man den inhalt eines int-arrays effizient (ohne schleife^^) ausließt und den inhalt einer variable vom typ string übergibt? Also von int[] nach String. Wie würde das auch anderrum aussehen? also von String nach int[] ?
Theoretisch müsst man dann eine art "trennerzeichen" einführen, dass man weiß, wo der eine intwert beginnt und der andere aufhört. Welches es wäre..wäre mir in dem sinne egal..hauptsache er bekäme aus dem Array nen schönen String hin..und aus diesem wieder dieses Array.

Für vorschläge bin ich offen :rolleyes:

thx schonmal


EDIT:
Sorry, hätte es direkt unter "Java/Algorithmen und Datenstrukturen mit Java" posten sollen
 
Zuletzt bearbeitet:
Hallo,

also wenn du es nicht mit einer Schleife lösen willst, dann bleibt ja nur noch Rekursion.

Das könnte dann so aussehen
Java:
public static String intArrayToString(int[] ar, int idx){
		if(idx < ar.length-1){
			return Integer.toString(ar[idx])+" - "+intArrayToString(ar, idx+1);
		}
		else {
			return Integer.toString(ar[idx]);
		}
		
	}

Java:
public int[] stringToIntArray(String txt){
		String[] numbersString = txt.split(" - ");
		int[] numbers = new int[numbersString.length];
		for(int i=0; i<numbers.length; i++){
			numbers[i] = Integer.parseInt(numbersString[i]);
		}
		return numbers;
	}

MFG

zEriX
 
Danke für die schnelle Antwort!

Das Problem ist bei dem int-array, dass es [361*297] groß ist.. Sozusagen wären das extrem viele Schritte, bis man den String zusamm hat.

Code:
int pix[]=new int[361*297];

...
//hier wird das array mit informationen gefüllt (klappt auch soweit)
...


String ausgabe="";
int i=0;
while(i<pix.length)
{
	ausgabe=ausgabe+pix[i]+" ";	
	i=i+1;
}

So wollt ich es zuerst lösen, nur mein PC macht das nicht mit - also er brauch relativ lang dafür.
 
Der Nachteil bei der Rekursion ist der, dass Rekursion ziemlich viel Speicher braucht. Ich persönlich würde es auch so in einer Schleife machen, aber ich würde nen StringBuffer verwenden, weil der in dieser hinsicht wesentlich schneller wäre. Ich hoffe ich hab jetzt nichts falsches gesagt, falls doch möge man mich verbessern. :)

Java:
StringBuffer ausgabe = new StringBuffer(297*361);
for(int i=0; i < pix.length; i++)
{
	ausgabe.append(pix[i]).append(" ");
}

Das der Rechner dafür ne Zeit lang braucht, ist klar, es sind immerhin über 100 000 durchläufe.

MFG

zEriX
 
Zuletzt bearbeitet:
*lol* in Java kann man echt jeden Tag was neues dazu lernen..


Danke! Hat so funktioniert, wie es sollte! :)
 
Nicht nur in Java kann man jeden Tag was dazu lernen :)

Wenn du willst, kannst du ja einfach mal die Zeit messen die deine und meine Methode brauchen.

Dann siehst du ja welche schneller ist.


MFG

zEriX
 
Zurück