我有一个抽象类,其中包含一个声明为 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时,是不是应该退出循环?
答案 0 :(得分:3)
您的代码存在问题,
tempString = tempString.substring(index,tempString.length());
应该是index + 1
,因为不想要包含该字符。
tempString = tempString.substring(index + 1,tempString.length());
但是,我建议您使用值DecimalFormat
和parse(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()) );