Good attempt. All you should do is to track minimum and maximum grades, while looping and discard them then. Also, (sum / 10) returns an integer result, while you probably need double one. The code:
import java.util.Scanner;
public class GradesProgram {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int[] grades = new int[10];
int i;
System.out.println("Enter 10 grades: ");
for (i = 0; i < 10; i++) {
grades[i] = kb.nextInt();
}
int sum = 0;
int min = 100;
int max = -100;
for (i = 0; i < 10; i++) {
sum = sum + grades[i];
if (grades[i] < min)
min = grades[i];
if (grades[i] > max)
max = grades[i];
}
sum -= min;
sum -= max;
double av = (double)sum / 8;
System.out.print("Average is " + av);
}
}
Also, using an array in this program is not necessary. You can sum grades and track extreme values in the input loop:
import java.util.Scanner;
public class GradesProgram {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int grade;
int i;
int sum = 0;
int min = 100;
int max = -100;
System.out.println("Enter 10 grades: ");
for (i = 0; i < 10; i++) {
grade = kb.nextInt();
sum = sum + grade;
if (grade < min)
min = grade;
if (grade > max)
max = grade;
}
sum -= min;
sum -= max;
double av = (double)sum / 8;
System.out.print("Average is " + av);
}
}
Hope it helps.