繁体   English   中英

如何在数组中搜索元素? 以及如何将带有声明方法的变量添加到数组列表中?

[英]How to search for an element in an array? and How to add variables with declared methods into an array list?

我有这个程序的2个主要麻烦(我知道)。 首先,我不知道如何将FinalGrade和LetterGrade放入数组。 其次,我不知道如何使用姓氏和名字在数组中搜索学生。 如果您在我的程序中发现其他问题,请告诉我。 谢谢

这是一等

package student;

public class Person {

    protected String FirstName, LastName;

    //Constructor
    public Person(String FirstName, String LastName) {
        this.FirstName = FirstName;
        this.LastName = LastName;
    }

    //Getters
 public String getFirstName() {
        return FirstName;
    }

    public String getLastName() {
        return LastName;
    }
    //Setters
    public void setFirstName(String FirstName) {
        this.FirstName = FirstName;
    }

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


}

这是二等班:

package student;

import java.util.ArrayList;
import java.util.Scanner;



public class Student extends Person{
    private int HomeworkAve, QuizAve, ProjectAve, TestAve; 
    private double FinalGrade;
    private String LetterGrade;

//Constructor for the averages
    public Student(int HomeworkAve, int QuizAve, int ProjectAve, int TestAve, String FirstName, String LastName) 
    {
        super(FirstName, LastName);
        this.HomeworkAve = HomeworkAve;
        this.QuizAve = QuizAve;
        this.ProjectAve = ProjectAve;
        this.TestAve = TestAve;

    }

    //Method to calculate final grade and letter grade
    //Final grade calculation
    public double CalcGrade (int HomeworkAve, int QuizAve, int ProjectAve, int TestAve)
    {
FinalGrade = (double)(0.15*HomeworkAve + 0.05*QuizAve + 0.4 * ProjectAve + 0.4*TestAve);
return FinalGrade;
    }

    //Letter grade calculation
    public String CalcGrade ( double FinalGrade)
    {
        if ( FinalGrade >= 90.00)
        LetterGrade="A";
    else if(FinalGrade >= 80.00)
        LetterGrade="B";
    else if(FinalGrade>=70.00)
        LetterGrade="C";
    else if(FinalGrade>=60.00)
        LetterGrade="D";
    else LetterGrade="F";

        return LetterGrade;
    }

    public String getFullName (String FirstName,String LastName)
    {
        String str1 = FirstName;
        String str2 = LastName;
        String FullName = str1+","+str2;
        return FullName;
    }

    public Student(int HomeworkAve, int QuizAve, int ProjectAve, int TestAve, double FinalGrade, String LetterGrade, String FirstName, String LastName) {
        super(FirstName, LastName);
        this.HomeworkAve = HomeworkAve;
        this.QuizAve = QuizAve;
        this.ProjectAve = ProjectAve;
        this.TestAve = TestAve;
        this.FinalGrade = FinalGrade;
        this.LetterGrade = LetterGrade;

    }


    //Setters for this student class
    public void setHomeworkAve(int HomeworkAve) {
        this.HomeworkAve = HomeworkAve;
    }

    public void setQuizAve(int QuizAve) {
        this.QuizAve = QuizAve;
    }

    public void setProjectAve(int ProjectAve) {
        this.ProjectAve = ProjectAve;
    }

    public void setTestAve(int TestAve) {
        this.TestAve = TestAve;
    }

    public void setFinalGrade(int FinalGrade) {
        this.FinalGrade = FinalGrade;
    }

    public void setLetterGrade(String LetterGrade) {
        this.LetterGrade = LetterGrade;
    }


    //Getters for this student class
    public int getHomeworkAve() {
        return HomeworkAve;
    }

    public int getQuizAve() {
        return QuizAve;
    }

    public int getProjectAve() {
        return ProjectAve;
    }

    public int getTestAve() {
        return TestAve;
    }

    public double getFinalGrade() {
        return FinalGrade;
    }

    public String getLetterGrade() {
        return LetterGrade;
    }

   public void DisplayGrade (){
       System.out.println(FirstName+" "+LastName+"/nFinal Grade: "+FinalGrade+"/nLetter Grade: "+ LetterGrade);
   }




   public static void main(String[] args){
    Scanner oScan = new Scanner(System.in);
    Scanner iScan = new Scanner(System.in);

    boolean bContinue = true;
    int iChoice;

   ArrayList<Student> students = new ArrayList<>();


   while (bContinue == true)
        {
   //The menu
       System.out.println("1.       New Class List");
       System.out.println("2.       Search for a Student");
       System.out.println("3.       Exit");
       System.out.println("Choose an item");

       iChoice = iScan.nextInt();


   //The 1st case: when the user wants to enter the new list   
   if (iChoice == 1){

   System.out.println("Enter the number of students");

   int numberOfStudents = iScan.nextInt();

    for(int iCount = 0;iCount < numberOfStudents;){

    System.out.println("Enter the name for Student " + ++iCount);
    System.out.println("Enter First Name");
    String FirstName = oScan.nextLine();
    System.out.println();

    System.out.println("Enter Last Name");
    String LastName = oScan.nextLine();
     System.out.println();

    System.out.println("Enter Homework Average");
    int HomeworkAve = iScan.nextInt();
    System.out.println();

    System.out.println("Enter Quiz Average");
    int QuizAve = iScan.nextInt();
    System.out.println();

    System.out.println("Enter Project Average");
    int ProjectAve = iScan.nextInt();
    System.out.println();

    System.out.println("Enter Test Average");
    int TestAve = iScan.nextInt();
    System.out.println();

如何获得FinalGrade和LetterGrade?

 Student hobbit = new Student(HomeworkAve,QuizAve, ProjectAve,TestAve,FirstName, LastName);
    students.add(hobbit);
  }
}




 //The 2nd case: when the user wants to search for a student        
    else if (iChoice == 2)
    {
     System.out.println("Enter First Name");
        String FirstName = oScan.nextLine();
        System.out.println();

        System.out.println("Enter Last Name");
        String LastName = oScan.nextLine();
        System.out.println();

这是我找到的学生的修改后的代码,但是找到后我不知道如何打印该数组

int i = 0;
for (Student student : students) {

    if (FirstName != null & LastName != null);{
    if (student.getFirstName().equals(FirstName) && student.getLastName().equals(LastName)) {

   System.out.println(students.get(i)); //this doesn't work

        break;
    }
    i++;

}
}   

 //The 3r case: when the user wants to exit       
 else if (iChoice == 3)
            {
                bContinue = false;
            }
}
}

}

您有一个Student类型的ArrayList,并且正在对String类型的变量进行indexOf。 您将必须遍历整个ArrayList,然后进行比较以找出学生姓名是否数学。 样例代码:

int i = 0;
for (Student student : students) {
    // Add null checks if first/last name can be null
    if (student.getFirstName().equals(firstName) && student.getLastName().equals(lastName)) {
        System.out.println("Found student at " + i);
        break;
    }
    i++;
}

FinalGrade和LetterGrade是每个对象中的变量,我认为您对Array / ArrayList的概念感到误解。 ArrayList仅保存每个Student对象,而不保存每个对象中的变量。 您可以遍历每个学生,并使用get *函数获得他们的finalGrade和letterGrade。 在执行此操作之前,您应该调用CalcGrade方法,以便计算成绩。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM