尝试在 Arraylist 上使用 get() 时未声明变量

问题描述 投票:0回答:1

我试图过滤掉数组列表中的特定元素,但我不断收到未声明的变量错误。

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 构造函数,但由于它是私有变量,因此无法工作。

我应该如何访问单独方法内的数组列表中的这些不同元素?

java arraylist
1个回答
0
投票

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();
© www.soinside.com 2019 - 2024. All rights reserved.