Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我试图得到某个学生的平均值,但它将所有值相加_Java_Arraylist - Fatal编程技术网

Java 我试图得到某个学生的平均值,但它将所有值相加

Java 我试图得到某个学生的平均值,但它将所有值相加,java,arraylist,Java,Arraylist,我试图得到某个学生的平均值,但它将所有值相加。这是输出程序 CMPE 325 Student Record Holder System -------------------------------- 1.Add Student 2.View Records 3.Update Students 4.Get Average 5.Exit -------------------------------

我试图得到某个学生的平均值,但它将所有值相加。这是输出程序

CMPE 325 Student Record Holder System -------------------------------- 1.Add Student 2.View Records 3.Update Students 4.Get Average 5.Exit -------------------------------- Enter your choice: 1 How many Students you want to input?: 2 Student[1]Enter Id Number: 1 First Name: Erwin Middle Name: asdasdas Last Name: sadasdas Degree: asdasdas Year Level: 1 Student[2]Enter Id Number: 2 First Name: INK Middle Name: asdasd Last Name: asdas Degree: sadas Year Level: 3 CMPE 325 Student Record Holder System -------------------------------- 1.Add Student 2.View Records 3.Update Students 4.Get Average 5.Exit -------------------------------- Enter your choice: 3 Enter Id Number: 1 ----------------Student Info-------------- Id Number: 1 Name:Erwin asdasdas sadasdas Degree and Year: asdasdas-1 The number of Subjects: 3 Name of Course: Law Enter Grade: 3 Name of Course: Laww2 Enter Grade: 1 Name of Course: Law4 Enter Grade: 2 Enter another subject and grade? [Y]or[N]n CMPE 325 Student Record Holder System -------------------------------- 1.Add Student 2.View Records 3.Update Students 4.Get Average 5.Exit ------------------------------- Enter your choice: 3 Enter Id Number: 2 ----------------Student Info-------------- Id Number: 2 Name:IDK asdasd asdas Degree and Year: sadas-3 The number of Subjects: 2 Name of Course: psych Enter Grade: 3 Name of Course: egg Enter Grade: 2 Enter another subject and grade? [Y]or[N]n CMPE 325 Student Record Holder System -------------------------------- 1.Add Student 2.View Records 3.Update Students 4.Get Average 5.Exit -------------------------------- Enter your choice: 4 ENTER ID NUMBER: 1 SUM: 11.0 AVERAGE: 2.2 学生记事 公共类Rec { 私有字符串IDNumber; 私有字符串名; 私有字符串名称; 私有字符串lastName; 私有字符串度; 私营部门一级

    @Override
    public String toString() 
    {
        return ("ID Number: "+this.getIdNumber()+
                    "\nName: "+ this.getFirstName()+
                    " "+ this.getMiddleName()+
                    " "+ this.getLastName()+
                    "\nDegree and YearLevel: "+ this.getDegree() +
                    " - " + this.getYearLevel());
    }

    public Rec()
    {
        String IDNum;
        String fName;
        String mName;
        String lName;
        String deg;
        int level;  
    }

    public Rec(String IDNum, String fName, String mName, String lName, String deg,int level )
    {
        this.IDNumber=IDNum;
        this.firstName=fName;
        this.middleName=mName;
        this.lastName=lName;
        this.degree=deg;
        this.yearLevel=level;
    }

    public void setIdNumber(String IDNumber)
    {
        this.IDNumber = IDNumber;
    }

    public void setFirstName(String firstName)
    {
        this.firstName=firstName;
    }

    public void setMiddleName(String middleName)
    {
        this.middleName=middleName;
    }


    public void setLastName(String lastName)
    {
        this.lastName=lastName;
    }


    public void setDegree(String degree)
    {
        this.degree=degree;
    }


    public void setYearLevel(int yearLevel)
    {
        this.yearLevel=yearLevel;
    }

    public String getIdNumber()
    {
        return IDNumber;
    }

    public String getFirstName()
    {
        return firstName;
    }


    public String getMiddleName()
    {
        return middleName;
    }

    public String getLastName()
    {
        return lastName;
    }

    public String getDegree()
    {
        return degree;
    }

    public int getYearLevel()
    {
        return yearLevel;
    }



}

你不应该在把所有的东西都加到总数之后再计算平均数吗? 您应该计算for循环外的平均值

for(int ind=0;ind<records.size();ind++)
{
   sum += records.get(ind).getGrade();

}
average=sum/records.size();
System.out.println(average);

平均值需要在整个for循环相加后计算,就像Prasad之前所说的那样。

您需要发布整个代码,以便我们了解结构。如何维护“记录”以及所有内容

有了可用的代码,我的理解是:

if(ID.equals(record.get(xx).getIdNumber()))
这将检查条件并进入循环。 但一旦进入,

for(int ind=0;ind<records.size();ind++)
{
sum += records.get(ind).getGrade();
average=sum/records.size();
}
这里不考虑id。所有分数相加,计算平均值。 您的代码结构可能在id和相应记录之间没有链接,或者您没有通过正确的逻辑考虑id的等级

需要完整的代码结构来进一步帮助您。

代码是基于完整的假设编写的,因为在我发布本文时,原始海报@user3145523没有发布其完整的源代码

假设

假设记录是主ArrayList问题被标记为ArrayList 假设这些记录在第一篇文章中包含另一个名为grades的ArrayList。用户似乎有一种动态的方式来分配grades count,而grade的简单数组似乎不太可能 假定ArrayList等级包含整数int元素 主要假设一个学生的平均成绩是计算出来的。原因->原始海报上说 我希望这个方法只计算某个数字的平均值。看上面的输出。它计算了我所有的输入,得到了平均值。我需要帮助

在帖子中询问用户这是否合适,没有其他联系方式

这样好吗

输出粘贴->

CMPE 325学生记录保存系统 1.添加学生 2.查看记录 3.更新学生 4.获得平均分 5.退出

----------------输入您的选择:1您要输入多少学生?:2学生[1]首先输入Id号:1 姓名:a中间名:b姓氏:c学位:1年级别:1 学生[2]输入身份证号码:2名字:d中间名:e姓氏:f

学位:1年等级:1 CMPE 325学生记录持有者系统 1.添加学生 2.查看记录 3.更新学生 4.获得平均分 5.退出

----------------输入您的选择:3

输入Id号:1

--------学生信息------身份证号码:1姓名:a b c 学位和年份:1-1

学生人数:2课程名称:aa输入成绩:2课程名称 课程:bb输入等级:6输入其他科目和等级?[Y]或[N]N

CMPE 325学生记录保存系统 1.添加学生 2.查看记录 3.更新学生 4.获得平均分 5.退出

----------------输入您的选择:3

输入身份证号码:2

--------学生信息------身份证号码:2姓名:d e f 学位和年份:1-1

学生人数:2课程名称:cc输入成绩:5课程名称 课程:dd输入年级:7输入其他科目和年级?[Y]或[N]N

CMPE 325学生记录保存系统 1.添加学生 2.查看记录 3.更新学生 4.获得平均分 5.退出

----------------输入您的选择:4输入有效的Id号:1总和:8.0平均值:2.0

代码->包括最初发布的代码,也在用户请求时添加


也许你可以试试这个:

ID = in.nextLine();
for (int ind = 0; ind < records.size(); ind++) {
if (ID.equals(record.get(ind).getIdNumber())) {
 sum += records.get(ind).getGrade();
}
  }
System.out.print("SUM: " + sum);
 average = sum / records.size();
 System.out.print("\nAVERAGE: " + average);


对不起,格式不对。:输入是什么,输出是什么,请举例说明?@user3145523为什么要撤消我的编辑?我更正了显示,使您的问题清晰明了…@atk对您的帖子进行了很好的编辑,为什么要将其还原?对不起,我现在正在还原ryt它仍在添加所有内容grades@SrinathGanesh你是说想要?我还是不能明白了。@SrinathGanesh你介意帮我吗?即使我把它搬出去了,它还是会增加所有的东西loop@SrinathGanesh我现在还原了代码。。我仍然坚持使用此代码。@user3145523上面的代码就是我的意思,我刚刚发布了格式,多亏了snocavotia,他给了你全部信息code@snocovatiaforint ind=0;indNo,这是一个典型的0刷新您的browser.我在发布后5秒编辑了它。它仍然添加了输入的整数,records.size正在计算为1。试着打印出来。这就是为什么。这值得更多的投票。感谢Srinath的努力。这肯定是所有答案中最重要的。很好。很抱歉,我没有在上面发布我的全部代码,我坚持格式。它说我必须添加更多评论我现在把我的代码贴在上面,我会试试,然后返回you@user3145523请看最后一部分post@SrinathGanesh好的,我去
深入了解更多参考资料和其他备选方案非常感谢:我现在已经发布了全部代码。我很抱歉回复晚了,我正在试验我的整个程序
for(int ind=0;ind<records.size();ind++)
{
sum += records.get(ind).getGrade();
average=sum/records.size();
}
    String ID = "fillit";

// fetch grade list
for(ArrayList gradeList2 : records.get(ID).grade) 
{
    double sum = 0.0;
    double average = 0.0;

    // cal values for all grades
    for(int gradeValue : gradeList2)
    {
        sum = sum + gradeValue;
    }

    // cal average of sum
        average = sum / gradeList2.count();
}

System.out.print("SUM: "+sum);
System.out.print("\nAVERAGE: "+average);
    import java.util.ArrayList;
import java.util.Scanner;

public class RecHolder {

    static ArrayList<Rec> record = new ArrayList<Rec>();
    static ArrayList<Grade> records = new ArrayList<Grade>();

    public RecHolder() {
        menu();
    }

    @SuppressWarnings("resource")
    public static void menu() {
        Scanner in = new Scanner(System.in);
        int choice;

        System.out.println("CMPE 325 Student Record Holder System");
        System.out.println("--------------------------------");
        System.out.println("1.Add Student");
        System.out.println("2.View Records");
        System.out.println("3.Update Students");
        System.out.println("4.Get Average");
        System.out.println("5.Exit");
        System.out.println();
        System.out.println("--------------------------------");
        System.out.print("Enter your choice: ");
        choice = in.nextInt();

        switch (choice) {
        case 1:
            record();
            break;
        case 2:
            display();
            break;
        case 3:
            update();
            break;
        case 4:
            average();
            break;
        case 5:
            break;

        }
    }

    public static void record() {
        Scanner in = new Scanner(System.in);
        int total;

        System.out.println("How many Students you want to input?: ");
        total = in.nextInt();

        Rec[] student = new Rec[total];

        for (int index = 0; index < student.length; index++) {
            student[index] = new Rec();

            System.out.printf("Student[%d]", index + 1);
            System.out.println("Enter");
            in.nextLine();

            System.out.print("Id Number: ");
            student[index].setIdNumber(in.nextLine());

            System.out.print("First Name: ");
            student[index].setFirstName(in.nextLine());

            System.out.print("Middle Name: ");
            student[index].setMiddleName(in.nextLine());

            System.out.print("Last Name: ");
            student[index].setLastName(in.nextLine());

            System.out.print("Degree: ");
            student[index].setDegree(in.nextLine());

            System.out.print("Year Level: ");
            student[index].setYearLevel(in.nextInt());

            record.add(student[index]);
        }

        menu();
    }

    public static void displayall() {
        Scanner in = new Scanner(System.in);
        if (record.size() == 0) {
            System.out.print("Invalid\n");
            in.nextLine();
            menu();
        } else {
            if (records.size() == 1) {
                System.out
                        .print("-------------The Record for all Student-----------");

                for (int i = 0; i < record.size(); i++) {
                    System.out.printf("\nStudent[%d]", i + 1);
                    System.out.print("\nId Number: "
                            + record.get(i).getIdNumber());
                    System.out.print("\nName: " + record.get(i).getFirstName()
                            + " " + record.get(i).getMiddleName() + " "
                            + record.get(i).getLastName());
                    System.out.print("\nDegree and Year: "
                            + record.get(i).getDegree() + "-"
                            + record.get(i).getYearLevel() + "\n\n");

                }
                in.nextLine();
                display();
            }

            else {
                System.out
                        .print("--------------The Record for all Student------------");

                for (int i = 0; i < record.size(); i++) {
                    System.out.printf("\nStudent[%d]", i + 1);
                    System.out.print("\nId Number: "
                            + record.get(i).getIdNumber());
                    System.out.print("\nName: " + record.get(i).getFirstName()
                            + " " + record.get(i).getMiddleName() + " "
                            + record.get(i).getLastName());
                    System.out.print("\nDegree and Year: "
                            + record.get(i).getDegree() + "-"
                            + record.get(i).getYearLevel() + "\n\n");

                }

                // for(int loopforSubjct = 0 ; loopforSubjct < records.size();
                // loopforSubjct++ )
                // {
                // System.out.printf("\nSubject: "+
                // records.get(loopforSubjct).getSubject()+" Grade: "+
                // records.get(loopforSubjct).getGrade());
                // }

                in.nextLine();
            }
        }
        display();
    }

    public static void specific() {
        Scanner in = new Scanner(System.in);
        if (record.size() == 0) {
            System.out.print("Enter Data 1st\n");
            in.nextLine();
            menu();
        } else {

            String id = new String();
            System.out.print("Enter Id Number: ");
            id = in.nextLine();
            if (records.size() == 1) {
                for (int loopforSpcfc = 0; loopforSpcfc < record.size(); loopforSpcfc++) {
                    if (id.equals(record.get(loopforSpcfc).getIdNumber())) {
                        System.out
                                .printf("\n ----------------Student Exists-------------- ");
                        System.out.print("\nId Number: "
                                + record.get(loopforSpcfc).getIdNumber());
                        System.out.print("\nName:"
                                + record.get(loopforSpcfc).getFirstName() + " "
                                + record.get(loopforSpcfc).getMiddleName()
                                + " " + record.get(loopforSpcfc).getLastName());
                        System.out.print("\nDegree and Year: "
                                + record.get(loopforSpcfc).getDegree() + "-"
                                + record.get(loopforSpcfc).getYearLevel()
                                + "\n\n");
                        in.nextLine();

                    } else {
                        in.nextLine();
                        System.out.print("Student Number Invalid!\n");

                        menu();

                    }

                }
            }

            else {
                for (int loopforSpcfc = 0; loopforSpcfc < record.size(); loopforSpcfc++) {
                    if (id.equals(record.get(loopforSpcfc).getIdNumber())) {
                        System.out.printf("\nStudent Exists");
                        System.out.print("\nId Number: "
                                + record.get(loopforSpcfc).getIdNumber());
                        System.out.print("\nName: "
                                + record.get(loopforSpcfc).getFirstName() + " "
                                + record.get(loopforSpcfc).getMiddleName()
                                + " " + record.get(loopforSpcfc).getLastName());
                        System.out.print("\nDegree and Year: "
                                + record.get(loopforSpcfc).getDegree() + "-"
                                + record.get(loopforSpcfc).getYearLevel()
                                + "\n\n");
                        System.out.println();

                    }

                }
                for (int loopforSubjct = 0; loopforSubjct < records.size(); loopforSubjct++) {
                    System.out.printf("\nSubject: "
                            + records.get(loopforSubjct).getSubject()
                            + " Grade: "
                            + records.get(loopforSubjct).getGrade());
                }

                in.nextLine();
            }

        }
        display();
    }

    public static void update() {
        Scanner in = new Scanner(System.in);
        if (record.size() == 0) {
            System.out.print("Enter Data 1st\n");
            in.nextLine();
            menu();
        } else {
            String idnum = new String();
            char answer;
            in.nextLine();
            System.out.print("Enter Id Number: ");
            idnum = in.nextLine();
            int total;

            for (int loopforSpcfc = 0; loopforSpcfc < record.size(); loopforSpcfc++) {
                if (idnum.equals(record.get(loopforSpcfc).getIdNumber())) {
                    System.out
                            .printf("\n ----------------Student Info-------------- ");
                    System.out.print("\nId Number: "
                            + record.get(loopforSpcfc).getIdNumber());
                    System.out.print("\nName:"
                            + record.get(loopforSpcfc).getFirstName() + " "
                            + record.get(loopforSpcfc).getMiddleName() + " "
                            + record.get(loopforSpcfc).getLastName());
                    System.out.print("\nDegree and Year: "
                            + record.get(loopforSpcfc).getDegree() + "-"
                            + record.get(loopforSpcfc).getYearLevel() + "\n\n");
                    in.nextLine();
                }
            }

            for (int loop = 0; loop < record.size(); loop++) {
                {
                    if (idnum.equals(record.get(loop).getIdNumber())) {
                        System.out.println("The number of Sujects: ");
                        total = in.nextInt();
                        do {
                            Grade[] update = new Grade[total];
                            for (int indexupdater = 0; indexupdater < update.length; indexupdater++) {
                                update[indexupdater] = new Grade();

                                // set ID... String
                                update[indexupdater].setIDNumber(idnum);

                                in.nextLine();
                                System.out.print("Name of Course: ");
                                update[indexupdater].setSubject(in.nextLine());

                                System.out.print("Enter Grade: ");
                                update[indexupdater].setGrade(in.nextDouble());

                                records.add(update[indexupdater]);
                            }

                            System.out
                                    .print("Enter another subject and grade? [Y]or[N]");
                            String ans = in.next();
                            answer = ans.charAt(0);

                        } while (answer == 'y');

                    }

                }
            }
        }
        menu();
    }

    public static void average() {

        Scanner in = new Scanner(System.in);

        if (record.size() == 0) {
            System.out.print("Enter Data 1st\n");
            in.nextLine();
            menu();
        } else {

            double sum = 0;
            double average = 0;
            String ID = new String();

            System.out.print("Enter An Valid Id Number: ");
            ID = in.nextLine();

            for (Rec rec : record) {
                if (rec.getIdNumber().equals(ID)) {

                    for (Grade grade : records) {
                        if (grade.getIDNumber().equals(ID)) {
                            // System.out.println(grade.getIDNumber());
                            sum = sum + grade.getGrade();
                        }
                    } // end loop-grade

                    average = sum / records.size();

                } // end if
            } // end loop-rec

            System.out.print("SUM: " + sum);
            System.out.print("\nAVERAGE: " + average);
        }
    }

    public static void display() {
        Scanner input = new Scanner(System.in);

        int choice;

        System.out.println("--------------------------------");
        System.out.println("1.View List");
        System.out.println("2.View Specific Record");
        System.out.println("3.Exit");
        System.out.println();
        System.out.println("--------------------------------");
        System.out.print("Enter your choice: ");
        choice = input.nextInt();

        switch (choice) {

        case 1:
            displayall();
            break;
        case 2:
            specific();
            break;
        case 3:
            menu();
            break;

        }

    }

    public static void main(String[] args) {
        new RecHolder();
    }
}
    class Grade {

    private String IDNumber;
    private String subject;
    private double grade;
    private double average;

    public Grade() {
        String IDNum;
        String sub;
        double grad;
        double ave;

    }

    public Grade(String IDNum, String sub, double grad, double ave) {
        this.IDNumber = IDNum;
        this.subject = sub;
        this.grade = grad;
        this.average = ave;

    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getSubject() {
        return subject;
    }

    public void setGrade(double grade) {
        this.grade = grade;
    }

    public double getGrade() {
        return grade;
    }

    public String getIDNumber() {
        return IDNumber;
    }

    public void setIDNumber(String ID) {
        this.IDNumber = ID;
    }

}
public class Rec {
    private String IDNumber;
    private String firstName;
    private String middleName;
    private String lastName;
    private String degree;
    private int yearLevel;

    @Override
    public String toString() {
        return ("ID Number: " + this.getIdNumber() + "\nName: "
                + this.getFirstName() + " " + this.getMiddleName() + " "
                + this.getLastName() + "\nDegree and YearLevel: "
                + this.getDegree() + " - " + this.getYearLevel());
    }

    public Rec() {
        String IDNum;
        String fName;
        String mName;
        String lName;
        String deg;
        int level;
    }

    public Rec(String IDNum, String fName, String mName, String lName,
            String deg, int level) {
        this.IDNumber = IDNum;
        this.firstName = fName;
        this.middleName = mName;
        this.lastName = lName;
        this.degree = deg;
        this.yearLevel = level;
    }

    public void setIdNumber(String IDNumber) {
        this.IDNumber = IDNumber;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public void setMiddleName(String middleName) {
        this.middleName = middleName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public void setDegree(String degree) {
        this.degree = degree;
    }

    public void setYearLevel(int yearLevel) {
        this.yearLevel = yearLevel;
    }

    public String getIdNumber() {
        return IDNumber;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getMiddleName() {
        return middleName;
    }

    public String getLastName() {
        return lastName;
    }

    public String getDegree() {
        return degree;
    }

    public int getYearLevel() {
        return yearLevel;
    }

}
ID = in.nextLine();
for (int ind = 0; ind < records.size(); ind++) {
if (ID.equals(record.get(ind).getIdNumber())) {
 sum += records.get(ind).getGrade();
}
  }
System.out.print("SUM: " + sum);
 average = sum / records.size();
 System.out.print("\nAVERAGE: " + average);