我试图过滤掉数组列表中的特定元素,但我不断收到未声明的变量错误。
public class Student
{
private String name;
private int age;
private double gpa;
public Student(String studentName, int studentAge, double studentGpa)
{
name = studentName;
age = studentAge;
gpa = studentGpa;
}
public String toString()
{
return "Student[Name: " + name + " Age: " + age + " GPA: " + gpa + "]\n";
}
}
Students类应该设置数组列表,并有多种方法来确定哪个学生的GPA最高,平均GPA等...
import java.util.ArrayList;
import java.util.*;
import java.text.*;
import java.io.*;
public class Students
{
private ArrayList<Student> students;
public Students()
{
students = new ArrayList<Student>();
}
public void readFile() throws IOException
{
String studentName;
int studentAge;
double studentGpa;
String line;
Scanner sc = new Scanner(new File("Students.txt"));
while (sc.hasNextLine())
{
studentName = sc.nextLine();
line = sc.nextLine();
studentAge = Integer.parseInt(line);
line = sc.nextLine();
studentGpa = Double.parseDouble(line);
Student student = new Student(studentName, studentAge, studentGpa);
students.add(student);
}
sc.close();
}
public String toString()
{
String results = "Students [";
for(int i = 0; i < students.size(); i++)
{results += students.get(i).toString(); }
return results;
}
//this method keeps saying studentGpa is an undeclared variable
public double highestGpa()
{
double highestGpa = students.get(0).studentGpa;
for(int i = 0; i < students.size(); i++)
if( students.get(i).studentGpa > highestGpa)
highestGpa = students.get(i).studentGpa;
}
}
我遇到的麻烦是在 HighGpa() 方法中。我正在尝试访问数组列表内的 StudentGpa 元素,但它一直说 StudentGpa 是一个未声明的方法。
我尝试将 StudentGpa 更改为 gpa,因为我决定在不使用“this”关键字的情况下创建 Student 构造函数,但由于它是私有变量,因此无法工作。
我应该如何访问单独方法内的数组列表中的这些不同元素?
studentGpa
不作为 Student
中的字段存在...并且 Student
中的所有字段都不是公共的。
您可能应该在
Student
中有一个访问器方法,例如
public class Student
{
private final String name;
private final int age;
private final double gpa;
public Student(String studentName, int studentAge, double studentGpa) {
name = studentName;
age = studentAge;
gpa = studentGpa;
}
public String toString() {
return "Student[Name: " + name + " Age: " + age + " GPA: " + gpa + "]\n";
}
public double getGpa() {
return gpa;
}
}
然后您可以在
highestGpa
中调用该方法,例如
double highestGpa = students.get(0).getGpa();