import java.util.Scanner;
public class average {
public static void main(String[]args){
Scanner in =new Scanner(System.in);
int n =in.nextInt();
int[]arr = new int[n];
int sum=arr[0];
sum+=arr[n];
for(int i=0;i-1;i++){
arr[i]=in.nextInt();
for(int j=0;j-1-i;j++){
arr[j]=in.nextInt();
if (arr[j]>arr[j+1]) {
int index = arr[j];
arr[j] = arr[j+1];
arr[j+1] = index;
}
}
}
int average =(sum-arr[0]-arr[arr.length-1])/(arr.length-2);
System.out.println("平均值为"+average);
}
}
望采纳!点击该回答右侧的“采纳”按钮即可采纳!!!
这个代码存在一些问题:我给你列出来了
根据你的代码,修改如下
import java.util.Scanner;
public class average {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] arr = new int[n];
int sum = 0;
for (int i = 0; i < arr.length; i++) {
arr[i] = in.nextInt();
sum += arr[i];
}
// 使用冒泡排序排序数组arr
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
// 去掉最大值和最小值后求平均值
int average = (sum - arr[0] - arr[arr.length - 1]) / (arr.length - 2);
System.out.println("平均值为" + average);
}
}
望采纳。代码存在以下问题:
修改后的代码如下
import java.util.Scanner;
public class Average {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] arr = new int[n];
int sum = 0;
for (int i = 0; i < arr.length; i++) {
arr[i] = in.nextInt();
sum += arr[i];
}
// 使用快速排序算法对数组进行排序
quickSort(arr, 0, arr.length - 1);
// 计算数组去掉最大值和最小值后的平均值
int average = (sum - arr[0] - arr[arr.length - 1]) / (arr.length - 2);
System.out.println("平均值为 " + average);
}
// 快速排序算法
private static void quickSort(int[] arr, int left, int right) {
if (left >= right) {
return;
}
int pivotIndex = partition(arr, left, right);
quickSort(arr, left, pivotIndex - 1);
quickSort(arr, pivotIndex + 1, right);
}
private static int partition(int[] arr, int left, int right) {
int pivot = arr[right];
int i = left - 1;
for (int j = left; j < right; j++) {
if (arr[j] <= pivot) {
i++;
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int temp = arr[i + 1];
arr[i + 1] = arr[right];
arr[right] = temp;
return i + 1;
}
}
因为第8行那里数组越界了,然后数组的排序和获取元素的值要分开,修改如下:
参考链接:
https://zhuanlan.zhihu.com/p/126354159
import java.util.Scanner;
public class average {
public static void main(String[]args){
Scanner in =new Scanner(System.in);
int n =in.nextInt();
int[]arr = new int[n];
int sum=0; // 数组元素的和初始值为0
//sum+=arr[n];
for(int i=0;i<arr.length;i++){
arr[i]=in.nextInt();
sum+=arr[i]; // 把当前的数组元素的值累加到和中
}
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){
if (arr[j]>arr[j+1]) {
int index = arr[j];
arr[j] = arr[j+1];
arr[j+1] = index;
}
}
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
// int average =(sum-arr[0]-arr[arr.length-1])/(arr.length-2);
double average =((double)sum)/n; // 用和除以数组元素的个数即数组元素和的平均值,用double强制类型转换下sum,以便使结果为double类型
System.out.println("\n平均值为"+average);
}
}
这题根本用不到排序
import java.util.Scanner;
public class average {
public static void main(String[]args){
Scanner in =new Scanner(System.in);
int n =in.nextInt();
int a;
int max=-999;
int min=9999;
while(n--)
{
a=in.nextInt();
if(max<a)max=a;
if(min>a)min=a;
sum+=a;
}
int average =(sum-max-min)/(n-2d);
System.out.println("平均值为"+average);
}
}