每次追加一个java字符串一个字符

每次追加一个java字符串一个字符,java,string,Java,String,我有一个非常简单的问题,事实上,我有点沮丧,因为我不能自己解决这个问题,但这里是: strBuffer += arg.charAt( i ); 在这一行中,我试图解析一个值,并将其逐字符添加到一个新字符串中。我这样做是为了把一个长字符串分割成一个小字符串数组 例如,这个字符串 -time delayed -run auto -mode go_n_run 将成为此阵列 strBuffer [0] = -time strBuffer [1] = delayed strBuffer [2] =

我有一个非常简单的问题,事实上,我有点沮丧,因为我不能自己解决这个问题,但这里是:

strBuffer += arg.charAt( i );
在这一行中,我试图解析一个值,并将其逐字符添加到一个新字符串中。我这样做是为了把一个长字符串分割成一个小字符串数组

例如,这个字符串

-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 = "";
            }
        }
String[]args=新字符串[2*ARG_LIMIT];
int指数=0;
对于(int i=0;i
我假设strBuffer是java的
StringBuffer
的一个实例;如果是这样-您应该使用strBuffer.append()

但是有一种更简单的方法来做你想做的事情:

字符串[]strBuff=arg.split(“”)//按空间分割


试着打印出你从结尾那一行得到的字符本身。
如果没有得到字符,则显然没有得到参数数组中要查找的字符。

应该使用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
    // ...
}

看起来你想重写

更具体地说,这是一种艰难的方式:

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 = "";
        }
    }
String[]args=新字符串[2*ARG_LIMIT];
int指数=0;
String strBuffer=新字符串();
对于(int i=0;i
您看过该类的API了吗?如果是这样,您将看到要使用的方法。那么,为什么不使用for循环和
append(…)
方法呢?编辑:或者更好,使用拆分为@Perception posted。他应该回答这个问题。你说的不工作是什么意思?strBuffer中实际存储了什么?strBuffer是什么类?另外,在我看来,您可以使用
String.split
而不是尝试重新发明轮子。字符串在java中是不可变的对象,您不能向其中添加任何内容。此外,字符串是一个对象,Java没有方法的运算符。我猜你确实不喜欢String的split方法。我可以很好地打印字符,但是当我调试数组时,它只显示“我正在试图理解你的代码,但看起来有点奇怪。”。如果你找到一个空格或者没有字符,为什么要这样做?strBuffer=“”;