主要是字符串的处理,具体可以看注释~
import java.util.*;
public class Main
{
public static void function(String str)
{
//时间复杂度O(n^3),不是特别好,只要他输入的时候在价钱的后面都跟上¥,应该都能应付
//判断最后是否有句点,没有的话加上
if(str.lastIndexOf('.') != str.length() -1)
{
str += ".";
}
//arry.length()-1的值就是数量
String[] arry = str.split("¥");
double sum = 0;
//因为前面已经统一过了,保证要处理的字符串最后一定有句点,所以最后一项都是无意义的
for(int i = 0 ; i < arry.length-1 ; i++)
{
String t = arry[i];
String n = "";
for(int j = 0 ; j < t.length() ; j++)
{
char t1 = t.charAt(j);
if(('0'<=t1 && '9' >= t1) || t1 == '.')
{
n += t1;
}
}
//可能n之前有多个【.】,找到第一次出现数字的位置,开始截取
int k = 0 ;
for(; k < n.length() ; k++)
{
if(n.charAt(k) != '.')
{
break;
}
}
n = n.substring(k);
sum += Double.parseDouble(n);
}
System.out.println("有"+(arry.length-1)+"项,共"+String.format("%.2f", sum)+"¥.");
}
public static void main(String[] args)
{
Scanner cin = new Scanner(System.in);
while(cin.hasNext())
{
function(cin.next());
}
}
}