有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我知道这个程序有两个主要问题。首先,我不知道如何将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();

如何获得最终成绩和信用等级

 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;
            }
}
}

}

共 (1) 个答案

  1. # 1 楼答案

    您有一个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是每个对象中的变量,我认为您对数组/数组列表的概念是错误的。ArrayList仅保存每个学生对象,而不是每个对象中的变量。您可以通过get*函数遍历每个学生并获得他们的最终成绩和letterGrade。在执行此操作之前,您应该调用CalcGrade方法,以便计算成绩