从数组中排除一个整数以查找第二小的整数



我有一个赋值,我的教授将向我的程序输入一个未指定数量的整数,我的程序将相应地处理数据,为每个值分配一个等级,并找到最高和最低值,但他总是在数据的末尾放一个-1,这样当input<0时,它将停止提示输入
问题是我的程序不应该处理-1。它不会作为等级添加,但它是等级列表的一部分,因此最低值始终为-1
我曾尝试编写代码,当检测到-1作为评估分数的逻辑的一部分时,会将其从数组中删除,但我尝试的所有操作都只返回错误
如何忽略-1并找到下一个最低值,或者在评估之前从列表中删除-1

import java.util.*;
public class Hw5{
public static void main(String[] args){
Scanner console = new Scanner(System.in);
int input = console.nextInt();
ArrayList<Integer> GradeList = new ArrayList<>();
while(input >= 0){
input = console.nextInt();
GradeList.add(input);
}
evaluateGrade(GradeList);
System.out.print(GradeList);
}

public static void evaluateGrade(List<Integer> Scores){ 
int count = Scores.size();
int high = Collections.max(Scores);
int low = Collections.min(Scores);
int Aplus = 0;
int A = 0;
int Amin = 0;
int Bplus = 0;
int B = 0;
int Bmin = 0;
int Cplus = 0;
int C = 0;
int Cmin = 0;
int Dplus = 0;
int D = 0;
int Dmin = 0;
int F = 0;
for(int i : Scores){
if(i > 97){
Aplus += 1;
}
else if(i >= 93 && i <= 96){
A += 1;
}
else if(i >= 89 && i <= 92){
Amin += 1;
}
else if(i >= 85 && i <= 88){
Bplus += 1;
}
else if(i >= 81 && i <= 84){
B += 1;
}
else if(i >= 77 && i <= 80){
Bmin += 1;
}
else if(i >= 81 && i <= 84){
B += 1;
}
else if(i >= 77 && i <= 80){
Bmin += 1;
}
else if(i >= 76 && i <= 73){
Cplus += 1;
}
else if(i >= 69 && i <= 72){
C += 1;
}
else if(i >= 65 && i <= 68){
Cmin += 1;
}
else if(i >= 61 && i <= 64){
Dplus += 1;
}
else if(i >= 57 && i <= 60){
D += 1;
}
else if(i >= 53 && i <= 56){
Dmin += 1;
}
else if(i >= 52 && i <= 0){
F += 1;
}
}
System.out.printf("Total number of grades = %d", count);
System.out.println();
System.out.printf("Number of A+'s = %d", Aplus);
System.out.println();
System.out.printf("Number of A's  = %d", A);
System.out.println();
System.out.printf("Number of A-'s = %d", Amin);
System.out.println();
System.out.printf("Number of B+'s = %d", Bplus);
System.out.println();
System.out.printf("Number of B's  = %d", B);
System.out.println();
System.out.printf("Number of B-'s = %d", Bmin);
System.out.println();
System.out.printf("Number of C+'s = %d", Cplus);
System.out.println();
System.out.printf("Number of C's  = %d", C);
System.out.println();
System.out.printf("Number of C-'s = %d", Cmin);
System.out.println();
System.out.printf("Number of D+'s = %d", Dplus);
System.out.println();
System.out.printf("Number of D's  = %d", D);
System.out.println();
System.out.printf("Number of D+'s = %d", Dmin);
System.out.println();
System.out.printf("Number of F's  = %d", F);
System.out.println();
System.out.printf("The highest grade = %d", high);
System.out.println();
System.out.printf("The lowest grade = %d", low);
System.out.println();
}

更改此

int input = console.nextInt();
ArrayList<Integer> GradeList = new ArrayList<>();
while(input >= 0){
input = console.nextInt();
GradeList.add(input);
}

类似的东西

List<Integer> gradeList = new ArrayList<>();
int input;
while ((input = console.nextInt()) >= 0) {
gradeList.add(input);
}

哪个程序到List接口,遵循Java惯用的赋值和求值约定,并遵守标准的变量命名约定。

最新更新