Что вы можете сделать, это указать возраст Student
в качестве параметра в вашем методе:
static Student createStudent(int age) { // note the parameter here
Scanner sc = new Scanner(System.in);
System.out.print("Enter your name:");
String name = sc.nextLine();
// no sc.nextInt() here anymore
if(age <20) {
return new JuniorStudent(name, age);
} else if( age < 30) {
return new IntermediateStudent(name,age);
}
return new SeniorStudent(name, age);
}
Таким образом, вы можете прочитать следующее целое число из командной строки где-нибудь еще и просто вызватьметод со следующим int в качестве параметра.Затем метод решает, какого типа ученика нужно создать.
ОБНОВЛЕНИЕ
В другом уроке, который вы предоставили, вы получите возраст из любой точки (командная строка, скорее всего), а затем использовать его в качестве параметра следующим образом:
public class Studentfactory {
public Student createStudentByControl() {
// create a new Control object
Control control = new Control();
// get the age from command line
int age = sc.nextInt();
// use the age as parameter for the control to create a new student
Student student = control.createStudent(age);
return student;
}
}