代码如图
这是放在for里面的
package fushi;
import java.util.Scanner;
public class test9 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();//n个商店
int[] arr = new int[n];
int[] ans = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = scan.nextInt();
if(i == 0) {
ans[i] = (arr[i]+arr[i+1])/2;//去尾
}else if(i == n-1) {
ans[i] = (arr[i]+arr[i-1])/2;
}else {
ans[i] = (arr[i-1]+arr[i]+arr[i+1])/3;
}
}
for (int i = 0; i < n; i++) {
System.out.print(ans[i]+" ");
}
}
}
这是放在外面的
package fushi;
import java.util.Scanner;
public class test9 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();//n个商店
int[] arr = new int[n];
int[] ans = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = scan.nextInt();
}
for (int i = 0; i < n; i++) {
if(i == 0) {
ans[i] = (arr[i]+arr[i+1])/2;//去尾
}else if(i == n-1) {
ans[i] = (arr[i]+arr[i-1])/2;
}else {
ans[i] = (arr[i-1]+arr[i]+arr[i+1])/3;
}
}
for (int i = 0; i < n; i++) {
System.out.print(ans[i]+" ");
}
}
}
两个结果不一样
为什么会这样
这很明显啊,你要是放一起的话, 遍历过程中,比如刚遍历到n 此时 n+1 后面的arr都是0 你拿来算平均当然就错了。。。
for (int i = 0; i < n; i++) {
arr[i] = scan.nextInt();
if(i == 0) {
ans[i] = (arr[i]+arr[i+1])/2;//去尾
}else if(i == n-1) {
ans[i] = (arr[i]+arr[i-1])/2;
}else {
ans[i] = (arr[i-1]+arr[i]+arr[i+1])/3;
}
}
这段代码中arr[i] = scan.nextInt();放在了for循环里面,但是在循环里使用到了arr[i+1]),而此时arr[i+1])还没有赋值,其值为0,所以结果不同,结果也是错误的,望采纳。