gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:32:07 25 4
gpt4 key购买 nike

这个程序有两个(我知道的)主要问题。首先,我不知道如何将 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 方法以便计算成绩。

关于java - 如何在数组中查找元素?以及如何将带有声明方法的变量添加到数组列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28788413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com