Как передать информацию из класса Main в другой класс java
вот класс Main, в него пользователь вносит свои данные
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Enter your name: ");
String name = scan.nextLine();
System.out.println("Enter your login: ");
String login = scan.nextLine();
System.out.println("Enter your age: ");
int age = scan.nextInt();
System.out.println("Enter your hobbies: ");
String hobbies1 = scan.nextLine();
String hobbies = scan.nextLine();
мне необходимо из этого класса передать данные в этот конструктор, который примет все данные от пользователя
public class Scanning extends Main {
public Scanning(){}
public Scanning(String name, String login, int age, List<String> hobbies){
}
}
я не понимаю как это сделать, я еще совсем новичек, так что не бейте, если тут все супер просто)
Ответы (2 шт):
Вы все правильно делаете, осталось добавить поля класса и инициализировать их.
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Enter your name: ");
String name = scan.nextLine();
System.out.println("Enter your login: ");
String login = scan.nextLine();
System.out.println("Enter your age: ");
Integer age = Integer.valueOf(scan.nextLine());
System.out.println("Enter your hobbies: ");
String hobbies1 = scan.nextLine();
String hobbies2 = scan.nextLine();
Scanning scanning = new Scanning(name, login, age, hobbies1, hobbies2);
}
}
public class Scanning {
private String name;
private String login;
private Integer age;
private List<String> hobbies;
public Scanning(String name, String login, Integer age, String ... hobbies) {
this.name = name;
this.login = login;
this.age = age;
this.hobbies = Arrays.asList(hobbies);
}
}
В первую очередь скорее всего вам нет необходимости писать extends Main т.к. это наследование, а оно вам вероятно не особо тут поможет.
В вашем классе Scanning присутствует 2 конструктора, один пустой (public Scanning(){}), другой принимающий параметры (public Scanning(String name, String login, int age, List<String> hobbies){}).
Для передачи данных в другой класс мы будем использовать второй.
Что бы вызвать конструктор, нужно создать экземпляр интересующего нас класса и передать ему параметры, которые требует второй конструктор, для этого создадим лист и запишем в него наши хобби (т.к. в вашем втором конструкторе требуется лист):
List hobbies = new LinkedList();
hobbies.add(hobbies1);
hobbies.add(hobbies2);
Теперь вызовем конструктор, создав новый экземпляр и передав необходимые данные:
Scanning scanning = new Scanning(name, login, age, hobbies);
Готово, мы передали данные в конструктор класса Scanning
UPD:
Так же мы можем поменять конструктор, как показал @Дмитрий в своем сообщении на:
public Scanning(String name, String login, Integer age, String ... hobbies)
Что бы он принимал набор строчек, тогда не будет необходимости создавать лист перед передачей данных, однако обратите внимание, что потом вам будет всеж нужно его обработать