【问题标题】:Computing Final Grade Using For Loops and Arrays in Java在 Java 中使用 For 循环和数组计算最终成绩
【发布时间】:2017-04-06 23:27:43
【问题描述】:

我目前正在上 Pre-AP 计算机科学课程。我们的老师给我们布置了一个今晚午夜前到期的项目。该项目要求您编写一个程序,询问您的姓名、您输入的成绩、询问您的成绩、平均成绩,然后返回一个字母值(例如 A、B、C)以及您的姓名(例如“伊克巴尔,努尔”)。我似乎已经完成了所有代码,并且当我输入成绩时只有一个超出范围的错误。但是,我的老师说解决这个错误的唯一方法是制作一个巨大的 for 循环并将我的全部里面的代码。这对我来说没有意义,所以如果是这样的话,有人可以解释一下吗?

如果不是这样,我想知道该怎么做。我不希望有人给我答案,而是引导我思考如何才能解决这个问题。

这是我目前的代码:

import java.util.*;
public class Tester {
public static void main (String[] args){
    //Prompt for first
    //Prompt for last
    //Prompt for # of assgmts to be averaged
    //for-loop = prompt to enter # grade until all grades are entered (use [])
    //loop through array again to calculate average
    //print info
    //prompt for multiple names and grades
    Scanner kbInput = new Scanner(System.in);
    System.out.println("How many students will you be entering?");
    int numOfStudents = kbInput.nextInt();
    String[] Students = new String[numOfStudents];

    int k;
    for(k = 0; k < Students.length; k++){
        System.out.println("Enter your first name.");
        String first = kbInput.next();
        System.out.println("Enter your last name.");
        String last = kbInput.next();
        Students[k] = last + ", " + first;
    }

    String finalGrade = "";
    System.out.println("How many grades will you be entering?");
    int numOfGrades = kbInput.nextInt();
    int[] Grades = new int[numOfGrades];
    int sum = 0;
    int j;
    for (j = 0; j < numOfGrades; j++){
        System.out.println("Enter your grades.");
        Grades[j] = kbInput.nextInt();
        sum+=Grades[j];
    }
    int average = sum/numOfGrades;
        if((average >= 90) && (average <= 100)){
            finalGrade = "A";
        }
        else if((average >= 80) && (average < 90)){
            finalGrade = "B";
        }
        else if((average >= 75) && (average < 80)){
            finalGrade = "C";
        }
        else if((average >= 70) && (average < 75)){
            finalGrade = "D";
        }
        else if(average < 70){
            finalGrade = "F";
        }
        String[] letterGrade = new String[numOfStudents];
        int count;
        for(count = 0; count < numOfStudents; count++){
            letterGrade[count] = finalGrade;
        }
    }
}

编辑:这里是项目的方向:

  1. 创建一个名为 FinalGrade 的新 Java 项目,其中包含一个名为 Tester 的类。
  2. 提示用户输入学生的名字,然后再提示输入学生的姓氏。
  3. 提示用户输入要平均分配的数量(例如 6 个)。
  4. 使用 for 循环,提示用户输入数字成绩(仅限整数),直到输入学生作业的确切数量。注意:成绩应该存储在一个数组中。
  5. 循环遍历成绩数组并计算输入成绩的平均值。
  6. 在屏幕上打印以下信息(按显示的顺序)... 一种。学生的姓氏 湾。学生的名字 C。学生的最终成绩(显示为字母成绩而不是数值) 示例输出... 霍华德,德里克 - A

超越…… 1. 更改您的应用程序以允许输入多个学生和年级。

【问题讨论】:

  • 你想为你的成绩输入什么?
  • 您的GradesStudents 之间没有任何联系。所以每个学生都将拥有相同的成绩!我认为您的老师的意思是制作一个大的外部 for 循环,该循环将被执行numberOfStudents 次。在这个 for 循环中,询问每个 one 学生的姓名和成绩。然后继续下一个学生。考虑创建一个班级Student,其中包含詹姆斯和一名学生的成绩
  • 与您的特定问题无关的建议:将您的代码拆分为方法。这是一种很好的做法,有助于隔离问题,使您的代码更具可读性,划分责任(“分而治之”),...最重要的是,它将使设计和编写代码更容易。
  • 您的问题不太清楚。根据您的代码,您要询问等级数。是否所有学生的成绩/科目数。就像5个学生和3个年级一样。你必须问15个等级。学生各 3 个。然后分别计算每个学生的平均成绩。
  • @NoorIqbal 假设您的代码没有按预期工作。我试图运行它,它卡在中间。

标签: java arrays for-loop average


【解决方案1】:

如果您使用分数来评估您的成绩,请制定一种方法,将可能的总分相加,然后将您获得的分数相加,然后除以求小数点。请务必将该乘积乘以 100。然后,使用 Math.round() 将成绩四舍五入。

【讨论】:

  • 正如上面 domdom 评论的那样,我还建议将您的代码划分为方法。这样处理起来就容易多了。
猜你喜欢
  • 1970-01-01
  • 2022-10-13
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
  • 2015-01-19
  • 2012-11-01
相关资源
最近更新 更多