0

谁能看到我的代码为什么或在哪里会给我带来麻烦,我得到一个字符串索引超出范围:-1 错误。

我想要做的是通过 GUI 从用户那里获取输入并获取该输入并检查它是否包含任何数字,即 1,2,3... 并将它们转换为字符串(“one”,“two”, “三”),通过在一个句子中替换它们。

所以这句话(我有 9 只猫和 1 条狗)会导致(我有 9 只猫和 1 条狗)

我不确定我做错了什么,或者我想做的是合法编程,正如你所知,我对它很陌生。

多谢你们!!

private String getResultStr()
{
    /*** Local Variables ***/

    StringBuffer result;
    String userInput;
    int digit;
    int count;
    String finalResult = "";
        String digitAsStr;

    /*** Instantiate ***/

    result = new StringBuffer();

    /*** Extract Digits (if any) ***/

    userInput = txtInput.getText();
    result.append( userInput );

    count = 0;

    while ( count < result.length() )
    {

        for ( int i = 0; i < result.length(); i++ )
            if ( result.charAt( i ) >= '0' || result.charAt( i ) <= '9' )
            {
                digit = result.charAt( i );
                digitAsStr = digitToString( digit );
                result.deleteCharAt( i );
                result.insert( i - 1, digitAsStr );
            }

        count++;
    }

    finalResult = result.toString();

    return finalResult;

}
4

3 回答 3

1

你开始迭代 for ( int i = 0; i < result.length(); i++ )然后你得到

result.insert( i - 1, digitAsStr );
于 2013-04-24T02:47:58.880 回答
0

您的 if 语句:if ( result.charAt( i ) >= '0' || result.charAt( i ) <= '9' )应该是:if ( result.charAt( i ) >= '0' && result.charAt( i ) <= '9' )否则一切都会被接受。

于 2013-04-24T02:46:36.830 回答
0

你的线

result.insert( i - 1, digitAsStr );

在迭代 0 将尝试访问 -1 处的索引。

于 2013-04-24T02:49:32.533 回答