主要是字符串的处理,具体可以看注释~
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()); } } }