String in ein multidimensionales Array umwandeln

Timmorn

Mitglied
Hallo,

ich stehe da etwas an. Ich habe versucht einen String in ein multidimensionales Array zu verwandeln. Logisch wäre mir folgender Code etwa erschienen:

Java:
public class Main {
    public static void main(String[] args){
        String source = "Punkte,1,2:Striche,1,2,3:Wellen,3,4,5" ;
        String[] first = source.split(":");
        String[] arr = new String[first.length];
        for(int i = 0;i < dummy.length;i++){
            String[][] arr[i] = first[i].split(",");
        }    
    }
}
Zeile 7 stimmt aber so nicht. Kann mir wer helfen, wie das lauten muss?

Danke,
Wolfgang
 
Suchst du folgendes?
Java:
		String source = "Punkte,1,2:Striche,1,2,3:Wellen,3,4,5";
		String[] split = source.split(":");
		String[][] arr = new String[split.length][];
		for (int i = 0; i < arr.length; i++) {
			arr[i] = split[i].split(",");
		}
???:L

Wieso willst du eig. unbedingt ein 2-Dim-Array?
Wäre
Java:
		List<String[]> liste = new ArrayList<String[]>();
		for (int i = 0; i < split.length; i++) {
			liste.add(split[i].split(","));
		}

oder nur eine Liste von entsprechenden Objekte nicht schöner?
 
Naja, das wird so nicht ganz aufgehen. Dein arr ist von Anfang an eindimensionales Array. Außerdem deklarierst du es ja in Schleife immer neu, was auch nicht richtig ist.
Versuche also von Anfang an 2d Array zu erstellen und in der Schleife nur initialisieren.
 
Danke eRaaaa, das funktioniert! Jetzt wo ich es sehe, sehe ich auch was bei mir falsch war.

Nein, muss natürlich kein multi Array sein. Warum ist eine Liste schöner?
 
Naja, Arrayhandling in Java ist etwas verkrüppelt. Lässt sich z.B. nicht mehr super mit Generics arbeiten.
Am schönsten wär natürlich ein eigener Datentyp, hier ein Beispiel:
Java:
import java.util.ArrayList;
import java.util.List;

public class Test {

    public static void main(String[] args) {
        List<Data> data = Data.parse("Punkte,1,2:Striche,1,2,3:Wellen,3,4,5");
    }

    static class Data {
        private final String name;
        private List<Integer> values;

        Data(String name, List<Integer> values) {
            this.name = name;
            this.values = values;
        }
        
        public String getName() {
            return name;
        }
        
        public List<Integer> getValues() {
            return values;
        }

        static Data valueOf(String str) {
            String[] splittedStr = str.split(",");
            String name = splittedStr[0];
            List<Integer> data = new ArrayList<Integer>();
            for (int i = 1; i < splittedStr.length; i++) {
                data.add(Integer.valueOf(splittedStr[i]));
            }
            return new Data(name, data);
        }
        
        static List<Data> parse(String str) {
            List<Data> data = new ArrayList<Data>();
            for (String s : str.split(":")) {
                data.add(valueOf(s));
            }
            return data;
        }
    }
}
 

Zurück
Oben