-3

これがJAVAとAndroidプログラミングの5週目であるため、これがばかげた質問ではないことを願っています。だから私はまだこれに非常に新しいです。

これが私のコードです:

public void splitData(){ //**********************PROBLEM HERE**********************

    //Initialise everything to 0 to prepare for variable entry
    y=0;
    gender = "";
    sAge = "";
    sTotalC = "";
    smoker = "";
    sHDLC = "";
    medication = "";
    sSystolic = "";

    //To locate the spaces in the data
    for(x=0;x<toSplit.length();x++){

        if (toSplit.charAt(x) == ' '){

            spaceCount[y]=x;
            y++;

        }

    }

    //to put together gender
    for(x=0;x<spaceCount[0];x++){

        gender+= toSplit.charAt(x);

    }

    //to put together age
    for(x=spaceCount[0]+1;x<spaceCount[1];x++){

        sAge+=toSplit.charAt(x);

    }

    //to put together total Cholesterol
    for(x=spaceCount[1]+1;x<spaceCount[2];x++){

        sTotalC+=toSplit.charAt(x);

    }

    //to put together smoker status
    for(x=spaceCount[2]+1;x<spaceCount[3];x++){

        smoker+=toSplit.charAt(x);

    }

    //to put together HDL Cholesterol level
    for(x=spaceCount[3]+1;x<spaceCount[4];x++){

        sHDLC+=toSplit.charAt(x);

    }

    //to put together medication status
    for(x=spaceCount[4]+1;x<spaceCount[5];x++){

        medication+=toSplit.charAt(x);

    }

    //to put together Systolic BP
    for(x=spaceCount[5]+1;x<=toSplit.length();x++){

        sSystolic+=toSplit.charAt(x);

    }



}

}

つまり、基本的に、文字列内のすべてのスペースを見つけ、そのスペースに基づいて、文字列のアルファベットをさまざまな変数に結合し、新しく作成された個々の単語をEditTextに表示するというひどい試みがあります。

このコードのすべてが正常に機能します。ボタンを押すまで、mSplitは上記のタスクを実行し始め、「残念ながらアプリが動作を停止しました」と表示されます。

私はグーグルで多くのウェブサイトに鼻を突っ込んできましたが、それらのほとんどは他の形式の方法を使用して文を分割し、別の配列や変数に保存せずにすぐに表示します。

私はC++についての知識が限られているので、おそらく長くて愚かな方法でそれをやっているように思われます。したがって、私がそれを私が知っている唯一の方法でやろうとした理由です。

私はすべての提案とコメントを受け入れます、そして私は前もって謙虚に感謝します。

4

3 に答える 3

3

分割関数を使用してから、文字列配列に入れます

String what = "word word1 word2 word3";
String [] temp = what.split(" ");

temp[0] には「word」が含まれます temp[1] には「word1」が含まれます...

于 2012-12-28T07:00:46.843 に答える
0

それらの数がわかっていて、間に複数のスペースがある場合...

    String toSplit = "aoksd    oaskod    ssdoks    aoskdo    skasdk soakd";
    String[] msg = new String[6];
    int a = 0;
    int c = 0;
    while(true)
    {
        a = toSplit.indexOf(" ");
        if(a == -1)
        {
            msg[c] = toSplit;
            break;
        }
        msg[c++] = toSplit.substring(0, a);
        toSplit = toSplit.substring(a, toSplit.length()).trim();
    }
于 2012-12-28T07:29:43.953 に答える
0

このコードを試してください:

String[] infoArray = info.split("\\s+");  

あなたの住所についても同じことをしてください。
このようにして、配列のサイズを知る前に配列を初期化する必要はなく、すべての空白も無視できます。trim文字列を分割する前に、文字列 の方が適しています。

于 2012-12-28T07:09:51.823 に答える