java - 处理固定数组的越界

标签 java arrays

我的问题是,例如只有三个及格成绩,用户输入的 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/

相关文章:

具有垂直选项卡内容的 Php 数组

c++ - 使动态数组变大

java 枚举与数组属性

java - DateFormatter 那个不挑剔?

php - 如何设置从MySQL数组获取多个值并检查数组键

java - 如何将项目从 Github 同步到 Eclipse

java - 测试所有可能的行组合

java - 使二维数组成为属性,JAVA

java - Canvas.drawLines 显示不连续的线段

java - 构造函数故障排除