0

非常に簡単な質問があります。実際、これを自分で解決できないことに少し不満を感じていますが、ここにあります。

strBuffer += arg.charAt( i );

この行を使用して、値を解析し、新しい文字列に1文字ずつ追加しようとしています。これは、1つの長い文字列を小さな文字列の配列に分離するために行っています。

例、この文字列

-time delayed -run auto -mode go_n_run

この配列になります

strBuffer [0] = -time 
strBuffer [1] = delayed 
strBuffer [2] = -run 
strBuffer [3] = auto 
strBuffer [4] = -mode 
strBuffer [5] = go_n_run

したがって、「+ =」を含むコード行は機能せず、strBufferに何も入れられません。だから私はフォーラムで見つけたもう少し「複雑な」何かを試しました:

strBuffer.concat( new String( new char[]{arg.charAt( i )} ) );

しかし同じ結果、strBufferには何も入れられません。

だから、どんなヒントもいただければ幸いです

ありがとう

編集:これが完全な方法です

String[] args = new String[2 * ARG_LIMIT];
        int index = 0;

        for( int i = 0; i < arg.length(); i++ )
        {
            String strBuffer = new String();

            if( arg.charAt( i ) != ' ' )
            {   

                            // The two methods I've tried
                strBuffer.concat( new String( new char[]{arg.charAt( i )} ) );

                strBuffer += arg.charAt( i );

            }
            else if( arg.charAt( i ) == ' ' )
            {
                args[index] = strBuffer;
                index++;
                strBuffer = "";
            }
        }
4

4 に答える 4

6

strBufferこれはjavaのインスタンスであると想定しますStringBuffer。もしそうなら-あなたはを使用する必要がありますstrBuffer.append()

しかし、あなたが望むことをするためのより簡単な方法があります:

String [] strBuff = arg.split( ""); //スペースで分割

于 2012-05-17T14:07:14.007 に答える
1

StringTokenizerを使用する必要があります。コードは次のとおりです。

// the first parameter is the string to be parsed, the second parameter is the delimiters
StringTokenizer st = new StringTokenizer("-time delayed -run auto -mode go_n_run", " ");
while (st.hasMoreTokens()) {
    String s = st.nextToken();
    // append s to your strBuffer
    // ...
}
于 2012-05-17T14:15:22.440 に答える
1

書き直そうとしているようですString.split()

より具体的には、これを難しい方法で行っています。

String[] args = arg.split(" ",2*ARG_LIMIT);

strBufferがforループの次の反復まで存続しなかったため、試したものは機能しませんでした。このコードは機能していました:

    String[] args = new String[2 * ARG_LIMIT];

    int index = 0;
    String strBuffer = new String();

    for( int i = 0; i < arg.length(); i++ )
    {

        if( arg.charAt( i ) != ' ' )
        {   

            strBuffer += arg.charAt( i );

        }
        else if( arg.charAt( i ) == ' ' )
        {
            args[index] = strBuffer;
            index++;
            strBuffer = "";
        }
    }
于 2012-05-17T14:20:34.847 に答える
0

最後にその行から取得した文字自体を印刷してみてください。文字がない場合は、引数配列で探しているものが明らかに得られていません。

于 2012-05-17T14:08:07.863 に答える