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);
}
}
答案 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。