我是Java的新手。
如果您想知道我要解决的问题,请检查以下内容:http://codeforces.com/problemset/problem/200/B
这两个版本的代码可以解决相同的问题:
1-(用于循环)版本
public static void method() {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
double sum = 0;
for (int i = 0; i < n; i++)
sum += (sc.nextInt() / 100.0);
System.out.println(sum * 100.0 / n);
}
2-(while循环)版本
public static void method() {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
double sum = 0;
while (n-- > 0) {
sum += (sc.nextInt() / 100.0);
}
System.out.println((sum * 100.0) / n);
}
================================================ ====
以下是其中每个输入:
3
50 50 100
这是它们每个的输出:
1-(用于循环):66.66666666666667
2-(while循环):-200.0
================================================ ====
为什么输出不同?
答案 0 :(得分:1)
n--
,这将更改n
的值,并使其最终为-1
。
因此您的总和将为-1
,而您得到-200
,但在第一个解决方案中n
不会改变,最后为200/3 = 66.6
答案 1 :(得分:0)
您似乎先递减n,然后求值,这将使n变为负数
-- X = decrement X then evaluate
X -- = evaluate X then decrement X