开发者

incompatible type of double array and properties string.split()

public static void main(String[] args)
{
    String input="jack=susan,kathy,bryan;david=stephen,jack;murphy=bruce,simon,mary";
    String[][] family = new String[50][50];

    //assign family and children to data by ;
    StringTokenizer p = new StringTokenizer (input,";");
    int no_of_family = input.replaceAll("[^;]","").length();
    no_of_family++;
    System.out.println("family= "+no_of_family);
    String[] data = new String[no_of_family];
    int i=0;
    while(p.hasMoreTokens())
    {
        data[i] = p.nextToken();
        i++;
    }

    for (int j=0;j<no_of_family;j++)
    {
        family[j][0] = data[j].split("=")[0];
                    //assign child to data by commas
        StringTokenizer v = new StringTokenizer (data[j],",");
        int no_of_child = data[j].replaceAll("[^,]","").length();
        no_of_child++;

        System.out.println("data from input = "+data[j]);
        for (int k=1;k<=no_of_child;k++)
        {

            family[j][k]= data[j].split("=")[1].split(",");
            System.out.println(family[j][k]);
        }

    }

}

i have a list of family in input string and i seperate into a family and i wanna do it in double array family[i][j].

my goal is:

family[0][0]=1st father's name
family[0][1]=1st child name
family[0][2]=2nd child name and so on...

family[0][0]=jack
family[0][1]=susan
family[0][2]=kathy
family[0][3]=bryan
family[1][0]=david
family[1][1]=s开发者_开发百科tephen
family[1][2]=jack
family[2][0]=murphy
family[2][1]=bruce
family[2][2]=simon
family[2][3]=mary

but i got the error as title: in compatible types found:java.lang.String[] required:java.lang.String family[j][k]= data[j].split("=")[1].split(",");

what can i do?i need help

nyone know how to use StringTokenizer for this input?


Trying to understand why you can't just use split for your nested operation as well.

For example, something like this should work just fine

for (int j=0;j<no_of_family;j++)
{
    String[] familySplit = data[j].split("=");

    family[j][0] = familySplit[0];

    String[] childrenSplit = familySplit[1].split(",");
    for (int k=0;k<childrenSplit.length;k++)
    {

        family[j][k+1]= childrenSplit[k];
    }

}


You are trying to assign an array of strings to a string. Maybe this will make it more clear?

String[] array = data.split("=")[1].split(",");

Now, if you want the first element of that array you can then do:

family[j][k] = array[0];


I always avoid to use arrays directly. They are hard to manipulate versus dynamic list. I implemented the solution using a Map of parent to a list of childrens Map<String, List<String>> (read Map<Parent, List<Children>>).

public static void main(String[] args) {
        String input = "jack=susan,kathy,bryan;david=stephen,jack;murphy=bruce,simon,mary";

        Map<String, List<String>> parents = new Hashtable<String, List<String>>();
        for ( String family : input.split(";")) {
            final String parent = family.split("=")[0];
            final String allChildrens = family.split("=")[1];

            List<String> childrens = new Vector<String>();
            for (String children : allChildrens.split(",")) {
                childrens.add(children);
            }
            parents.put(parent, childrens);
        }

        System.out.println(parents);
    }

The output is this:

{jack=[susan, kathy, bryan], murphy=[bruce, simon, mary], david=[stephen, jack]}

With this method you can directory access to a parent using the map:

System.out.println(parents.get("jack"));

and this output:

[susan, kathy, bryan]
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜