Do-While Loop无限

时间:2014-10-26 03:57:11

标签: java

我有一个抽象类,其中包含一个声明为 moneyString

的String类型的变量
String moneyString;

它包含的数据类似于$ 123,456,789

所以在抽象类里面我有函数

void convertToInt(){
    remove(',');
    remove('$');
    empMoney = Integer.parseInt(moneyString.substring(0, moneyString.length()) );
}

我的删除功能

void remove(char character){
    boolean moreFound = true;
    String tempString;
    int index;
    do{
        index = moneyString.indexOf(character);
        tempString = moneyString;
        if(index!=-1){
            //From beggining to the character
            moneyString = moneyString.substring(0,index);
            //After the character to the end
            tempString = tempString.substring(index,tempString.length());
            moneyString += tempString;
        }
        else{
            moreFound = false;
        }

    } while(moreFound);

} //END remove()

当moreFound = false时,是不是应该退出循环?

2 个答案:

答案 0 :(得分:3)

您的代码存在问题,

tempString = tempString.substring(index,tempString.length());

应该是index + 1,因为想要包含该字符。

tempString = tempString.substring(index + 1,tempString.length());

但是,我建议您使用值DecimalFormatparse(String)。像,

public static int convertToInt(String money) throws ParseException {
    NumberFormat df = new DecimalFormat("$#,###");
    return df.parse(money).intValue();
}

然后您可以将其称为

public static void main(String[] args) {
    try {
        System.out.println(convertToInt("$123,456,789"));
    } catch (ParseException e) {
        e.printStackTrace();
    }
}

输出

123456789

答案 1 :(得分:1)

确实你必须改变这条线:

tempString = tempString.substring(index,tempString.length());

为:

tempString = tempString.substring(index+1,tempString.length());

可以对Long类型的变量进行赋值:

moneyString="$123,456,789,101";
long empMoney;
remove('$');
remove(',');
empMoney = Long.parseLong(moneyString.substring(0, moneyString.length()) );