当前位置: 首页 > 知识库问答 >
问题:

GradeBookJava计划。帮忙叫班?

魏鸿哲
2023-03-14

任务如下。

一个老师有五个学生参加了四次考试。教师根据学生四次考试成绩的平均值,使用以下等级表给学生分配字母等级。

90-100:  A
80-79:  B
70-79:  C
60-69:  D
0-59:  F

编写一个类,该类在arraylist对象上使用字符串数组来保存五名学生的姓名,使用五个字符的数组来保存五名学生的字母成绩,使用五个数组(每个数组有四个双倍字符)来保存每个学生的一组考试成绩。该类应该具有返回学生姓名、平均测试分数和基于平均值的字母等级的方法。

在一个允许用户输入每个学生姓名及其四个考试分数的程序中演示该课程。然后它应该显示每个学生的平均考试分数和字母等级。

程序不应接受低于0或高于100的分数

下面是代码:

学生班:

public class Student{
    private String name;
    private double[] test = new double[4];


    public Student(){
        name = " ";
    }

    public Student(String n, double[] t){
        name = n;
        test = t;
    }

    public void setName(String n)
    {
        name = n;
    }

    public String getName(){
        return name;
    }

    public void setTest(double t,int i)
    {
        test[i] = t;
    }

    public double getTest(int i)
    {
        return test[i];
    }


    public double getTestAvg(){

        double sum = 0;
        double avg;
        for(int i = 0; i < test.length; i++)
        {
            sum += test[i];
        }
         avg = sum / test.length;
         return avg;
    }

    public char getLetterGrade(){

        double average = getTestAvg();
        char grade=0;

        if(average >= 90)
            grade = 'A';
        else if (average >= 80)
            grade = 'B';
        else if (average >= 70)
            grade = 'C';
        else if (average >=60)
            grade = 'D';
        else if (average < 60)
            grade = 'F';

        return grade;
    }

    public String toString(){
        String str = "";
        str += "\nName of student: " + name;
        str += "\nAverage test score: " + getTestAvg();
        str += "\nLetter grade: " + getLetterGrade();
        return str;
    }
}       

主要方案:

import java.util.Scanner;
import java.io.*;

public class GradeBook {

    public static void main(String[] args) throws IOException {

        Student[] students = new Student[5];

        getStudentData(students);

    }

    public static double getStudentData(Student[] array) {
        Scanner scan = new Scanner(System.in);
        String[] student = new String[5];
        double[] test = new double[4];
        for (int i = 0; i < student.length; i++) {
            System.out.println("Enter the name of the student : ");
            student[i] = scan.nextLine();
            for (int j = 0; j < test.length; j++) {
                System.out.println("Enter score " + (j + 1) + " for the student");
                test[j] = scan.nextDouble();
                scan.nextLine();
            }
            array[i] = new Student(student[i], test);

        }
        return 0;

    }
}

问题是,我可以输入所有信息,但在输入所有数字后将不会显示任何内容。任何帮助都将不胜感激!

共有1个答案

柴嘉年
2023-03-14

您没有看到显示的任何内容,因为您从未打电话显示任何内容。您正在填充“数组”,因此现在需要对其进行迭代。

在外部for循环(第一个)之后,您需要迭代填充的数组并打印出student对象。这将起作用,因为您已经有了一个toString()方法。

ex:

for(Student student : array)
{
    System.out.println(student);
}
 类似资料:
  • 匹配 字符串类似'type=""action=""id=""' 需要匹配多个action=""中间的内容。

  • 这件事我会坦白的;这是一个家庭作业,但有人能引导我走上正确的方向,并向我解释代码的某些部分应该是如何工作的吗?说明在代码和问题下面。 这是我到目前为止的代码: 我的问题:FILARC到底是如何工作的;我理解参数中的内容,但必须做什么每个弧都是不同的?如何为每个弧线设置一种颜色?我试着这样做,最后我用最接近结尾的颜色显示出来,并覆盖其他颜色。我可能会有更多,我继续编码。 这些是指示: ![在此处输入

  • 问题内容: 我用@ Singleton,@ Schedule和@Timeout注释创建了一个简单的示例,以尝试它们是否可以解决我的问题。 场景是这样的:EJB每5秒调用一次“检查”功能,并且如果满足某些条件,EJB将创建单个动作计时器,该计时器将以异步方式调用一些长时间运行的进程。(这是某种队列实现类型的东西)。然后它继续检查,但是尽管运行了很长时间,但不会启动另一个过程。 下面是我想出的代码,但

  • 必须包括,字母,数字,下划线,长度20个字符以内

  • 我尝试的把上述代码放到计划任务的 shell 脚本框里 但是报错 我所使用的程序需要这个任务 。 能帮我把上面的任务 脚本翻译成 amh 所支持的格式吗? fresns 宝塔安装手册

  • GNU 计划和自由软件基金会(the Free Software Foundation - FSF)是由Richard M. Stallman 于1984 年一手创办的。旨在开发一个类似 Unix、并且是自由软件的完整操作系统:GNU 系统。(GNU 是"GNU's Not Unix"的递归缩写,它的发音为"guh-NEW"。)各种使用linux 作为核心的GNU 操作系统正在被广泛的使用。虽然这