我的问题是,例如只有三个及格成绩,用户输入的 passGrade
数组的大小将仅为 三个,与 failGrade< 相同
:如果用户输入两个不及格成绩,那么failGrade
数组的大小只会是两个,简而言之,我想要两个数组固定长度。在我的程序中,它出界。
这是我引用的代码段:
Scanner input=new Scanner(System.in);
int gradeSize=0;
int fixedPassed=0;
int fixedFail=0;
int grades[]=new int[gradeSize];
int passGrade[]=new int[fixedPassed];
int failGrade[]=new int[fixedFail];
System.out.print("Enter Grade Size: ");
gradeSize=input.nextInt();
System.out.println();
System.out.print("Enter Grades: ");
for(int i=0; i<gradeSize; i++)
{
grades[i]=input.nextInt();
while(grades[i]<1 || grades[i]>100)
{
grades[i]=input.nextInt();
}
if(grades[i]>=75)
{
fixedPassed++;
passGrade[i]=grades[i];
}
else if(grades[i]<75)
{
fixedFail++;
failGrade[i]=grades[i];
}
}
for(int i=0; i<fixedPassed; i++)
{
System.out.print(passGrade[i]+" ");
}
for(int i=0; i<fixedFail; i++)
{
System.out.print(failGrade[i]+" ");
}
最佳答案
Java 数组的大小是固定的。因此,您需要获取输入,然后计算通过/失败。然后创建通过/失败数组,然后将成绩复制到其中。你可以做这样的事情,
System.out.print("Enter Grade Size: ");
int gradeSize = input.nextInt();
int passCount = 0;
int grades[]=new int[gradeSize];
System.out.println();
System.out.print("Enter Grades: ");
for (int i = 0; i < gradeSize; i++) {
grades[i] = input.nextInt();
if(grades[i] >= 75) {
passCount++;
}
}
int passGrade[] = new int[passCount];
int failGrade[] = new int[grades.length - passCount];
int failCount = passCount = 0;
for (int grade : grades) {
if (grade >= 75) {
passGrade[passCount++] = grade;
} else {
failGrade[failCount++] = grade;
}
}
System.out.println("Passing Grades: " + Arrays.toString(passGrade));
System.out.println("Failing Grades: " + Arrays.toString(failGrade));
关于java - 处理固定数组的越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25172829/