|
描述
Larry今年毕业并找到了一份工作。他赚很多钱,但似乎总是不够。Larry认为他需要控制他的投资以解决自己的财务问题。Larry拿到了自己的银行账户详单,想看看自己有多少钱。请帮助Larry写一个程序,通过过去12个月中每月的月末结余,计算平均结余。
输入
输入包含12行,每行包含一个数,为某个月的结余。每个数都是不大于1,000,000的正数,保留两位小数,省略"$"符。
输出
输出一个数,为这12个月的平均月末结余,保留到小数点后第二位,并在最前面加一个"$"符。
样例输入
100.00
489.12
12454.12
1234.10
823.05
109.20
5.27
1542.25
839.18
83.99
1295.01
1.75
样例输出
$1581.42 这个破题卡了我半天,一直是WrongAnswer。网上找了几个java的提交上去也都是
WrongAnswer。看了oj的提交记录,用java的也多会出现
WrongAnswer。
首先来看看我最初的代码:
- import java.text.DecimalFormat;
- import java.util.Scanner;
-
- public class Main {
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- float r = 0;
- int i = 0;
- while (i < 12) {
- r = r + in.nextFloat();
- i++;
- }
- r = r / 12;
- DecimalFormat df = new DecimalFormat(".00");
- String s = df.format(r);
- System.out.println("$" + s);
- }
- }
那么错误在哪里呢?我想到了边界测试。有如下两个测试用例
case 1:
input:
10000.00 10000.00 10000.00 10000.00 10000.00 10000.00 10000.00 10000.00 10000.00 10000.00 10000.00 10000.00 output:
$10000.00
case 2:
input:
0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01
output:
$.01
显然case2出现了问题。问题在于数据格式。当整数部分为0时会被舍去(注意红色部分)。为此修改如下:
- import java.text.DecimalFormat;
- import java.util.Scanner;
-
- public class Main {
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- float r = 0;
- int i = 0;
- while (i < 12) {
- r = r + in.nextFloat();
- i++;
- }
- r = r / 12;
- DecimalFormat df = new DecimalFormat("0.00");
- System.out.println("$" + df.format(r));
- }
- }
这次两个用例都通过了,提交到oj也accepted了。
|