云分享 Share

主要是字符串的处理,具体可以看注释~

代码如下

             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());
		}
	}
}    
   返回