在另一个类的arraylist中使用指定值

时间:2013-11-30 20:17:48

标签: java arraylist

java新手,我正在创建一个学生记录系统。 我想在这段代码中使用存储在arraylist中的指定年份(我已经使用了数组列表,因为我计划最终使这个循环允许多个输入)

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

public class StudentYear 
{
    public ArrayList<Integer> studentYear;
    public void StudentYear()
    {
        studentYear = new ArrayList<Integer>();
        Scanner sc = new Scanner(System.in); 
        System.out.println("Please enter the year the student has most recently completed: ");
        studentYear.add(sc.nextInt());
        System.out.println(studentYear);
        }
    public ArrayList<Integer> getStudentYear()
    {
        return studentYear;
    }
}

这是我希望在arraylist studentYear中存储年份值的类的代码,从上面的代码进入

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

public class Results 
{
    public static void Results(StudentYear studentYear)
    {

        int year = studentYear.getStudentYear().get(0); 
        ArrayList<Integer> results = new ArrayList<Integer>();
        Scanner sc = new Scanner(System.in); 
        System.out.println("Please enter the results for "+year+":");
        results.add(sc.nextInt());
        System.out.println(results);

        }
    }

这是我的主要代码

StudentYear yearInputobject = new StudentYear();
yearInputobject.StudentYear();  


Results resultsInputobject = new Results();
resultsInputobject.Results();  //error here < The method Results(StudentYear) in the type Results is not applicable for the arguments ()

任何帮助都会非常感激,我已经坚持了几个小时。

修改:现在出错

exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The method Results(StudentYear) in the type Results is not applicable for the arguments ()

    at Main.main(Main.java:21)
再次

结果代码

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

public class Results 
{
    public static void Results(StudentYear studentYear)
    {

        int year = studentYear.getStudentYear().get(0); 
        ArrayList<Integer> results = new ArrayList<Integer>();
        Scanner sc = new Scanner(System.in); 
        System.out.println("Please enter the results for "+year+":");
        results.add(sc.nextInt());
        System.out.println(results);

        }
    }

1 个答案:

答案 0 :(得分:1)

您在get对象上呼叫StudentYear,而不是ArrayList

你已经有了一个获取ArrayList的方法,所以你只需要使用它,然后从它返回的ArrayList中获取元素:

int year = studentYear.getStudentYear().get(0);

至于你的第二个问题:

(首先,以大写字母开头的唯一方法是按惯例构造函数)。

您应该将Results方法重写为构造函数。然后,您需要将一些内容移动到新方法中。

以下是我构建Results对象的方法:

更改

public static void Results(StudentYear studentYear)...

public Results(int year) {
    this.year = year;
}

请注意,该方法的其余部分已被删除,并且应该采用单独的方法(以了解为什么只需查找构造函数及其用途)。而this.year = year行只是意味着您有一个名为year的字段,就像您的studentYear数组一样。它被赋予构造对象时使用的值。然后,您的其他方法将能够使用此值。

构造此对象时,您可以执行以下操作:

StudentYear yearInputobject = new StudentYear();
int year = yearInputobject.getStudentYear();
Results resultsInputobject = new Results(year);
resultsInputobject.printResults();

请注意,我也重写了StudentYear,并且我有一个名为getStudentYear()的方法,它直接返回一个int。