Java String Index超出范围,不知道什么是错的

时间:2013-04-24 02:42:49

标签: java

任何人都可以看到我的代码会给我带来麻烦的原因或位置,我的字符串索引超出范围:-1错误。

我想要做的是从用户通过GUI获取输入并获取该输入并检查它是否包含任何数字,即1,2,3 ...并将它们转换为字符串(" one& #34;,"两个","三个"), 用一句话替换它们。

所以这句话(我有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;

}

3 个答案:

答案 0 :(得分:1)

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

result.insert( i - 1, digitAsStr );

答案 1 :(得分:0)

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

答案 2 :(得分:0)

你的行

result.insert( i - 1, digitAsStr );
迭代0上的

将尝试在-1处访问索引。