Задача:
Создать класс Student
с параметрами имя и курс;
в методе Main
создать 5 объектов (студентов).
1 метод (show) выводит всю информацию о студентах.
2 метод: нужно передать все 5 студентов и вывести на консоль имена студентов, которые учатся на определенном курсе (номер курса нужно передать в метод, со сканером).
Помогите справиться со вторым методом, никак не получается его создать.
класс Main:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Student student1 = new Student();
student1.name = "Sasha";
student1.course = 1;
student1.show();
Student student2 = new Student();
student2.name = "Lesha";
student2.course = 2;
student2.show();
Student student3 = new Student();
student3.name = "Anya";
student3.course = 3;
student3.show();
Student student4 = new Student();
student4.name = "Tanya";
student4.course = 4;
student4.show();
Student student5 = new Student();
student5.name = "Ilya";
student5.course = 5;
student5.show();
}
student1.countCourse ();
класс Student:
import java.util.Scanner;
public class Student {
public String name;
public int course;
public void show() {
System.out.println(name + " " + course);
}
public void countCourse() {
int i = course;
String m = name;
System.out.println("Введите курс: ");
Scanner sc = new Scanner(System.in);
if (sc.hasNextInt() && sc.nextInt() > 0 && sc.nextInt() <= 5) {
i = sc.nextInt();
System.out.println(m);
} else {
System.out.println("Введите курс от 1 до 5");
}
}
}
Я б немного переделал:
show
и countCourse
можно было передать этот список, а там внутри пробежаться циклом и вывести нужную информацию.countCourse
организуем бесконечный цикл, в котором запрашиваем цифирочку (не хватает проверок на ошибки но это на вашей совести будет %)). Как только получаем нужную цифру курса - останавливаем цикл и организуем уже другой цикл, который бежит по переданной коллекции студентом и выводит имя+курс того студент, чей номер совпал с введенным.Как-то так.
class Student
package test;
import java.util.List;
import java.util.Scanner;
/**
* Created by iprogrammer on 13.11.2016.
*/
public class Student {
private String name;
private int course;
public Student(String name, int course) {
this.name = name;
this.course = course;
}
public static void show(List<Student> students) {
for (Student student : students) {
System.out.println(student.name + " " + student.course);
}
}
public static void countCourse(List<Student> students) {
Scanner sc = new Scanner(System.in);
int course = 1;
while (true) {
System.out.println("Введите курс (1-5): ");
course = sc.nextInt(); // Integer.parseInt(sc.nextLine());
if (course >= 1 && course <= 5)
break;
}
System.out.println("Студенты с курса номер " + course + ": ");
for (Student student : students) {
if (student.course == course)
System.out.println(student.name + " " + student.course);
}
}
}
метод main
List<Student> students = new ArrayList<>();
students.add(new Student("Sasha", 1));
students.add(new Student("Lesha", 2));
students.add(new Student("Anya", 3));
students.add(new Student("Tanya", 4));
students.add(new Student("Ilya", 5));
Student.show(students);
Student.countCourse(students);
Насколько я понимаю, в данной задаче под:
1 метод (show) выводит всю информацию о студентах. 2 метод: нужно передать все 5 студентов и вывести на консоль имена студентов, которые учатся на определенном курсе (номер курса нужно передать в метод, со сканером).
понимается создание методов в классе Main
, а не в классе Student
.
А теперь по порядку:
Задача: создать класс Student с параметрами имя и курс
Данный класс лучше определить таким образом:
public class Student {
private String mName;
private int mCourse;
public Student(String name, int course) {
mName = name;
mCourse = course;
}
public String getName() {
return mName;
}
public int getCourse() {
return mCourse;
}
public void setName(String name) {
mName = name;
}
public void setCourse(int course) {
mCourse = course;
}
public void print() {
System.out.println("Студент " + mName + " учится на " + mCourse + " курсе.");
}
}
Обратите внимание на:
Модификатор доступа private
у полей класса. С этим модификатором поля класса недоступны напрямую извне. Получить/задать значения этих полей можно с помощью соответствующих геттеров/сеттеров. Всегда объявляйте поля класса как private
, если явно не требуется иное.
Префикс m
у полей класса – этот префикс принято добавлять для всех нестатических полей класса (для статических полей префикс будет s
). По нему сразу можно понять что мы имеем дело с обычным полем класса.
Конструктор Student(String name, int course)
, с помощью которого мы сразу можем создать объект с нужными параметрами.
Соглашусь с Вами, что в классе Student
целесообразно определить некоторый метод, который будет выводить текстовое представление объекта на экран.
Далее:
в методе Main создать 5 объектов (студентов). 1 метод (show) выводит всю информацию о студентах.
Коль уж задача начального уровня и учебная, то для хранения списка студентов будем использовать простой массив:
public class Main {
public static void main(String[] args) {
Student[] students = new Student[5];
students[0] = new Student("Вася", 5);
students[1] = new Student("Петя", 1);
students[2] = new Student("Аня", 3);
students[3] = new Student("Федор", 5);
students[4] = new Student("Маша", 5);
show(students);
}
public static void show(Student[] students) {
for (int i=0; i<students.length; i++) {
students[i].print();
}
}
}
2 метод: нужно передать все 5 студентов и вывести на консоль имена студентов, которые учатся на определенном курсе (номер курса нужно передать в метод, со сканером).
public class Main {
public static void main(String[] args) {
Student[] students = new Student[5];
students[0] = new Student("Вася", 5);
students[1] = new Student("Петя", 1);
students[2] = new Student("Аня", 3);
students[3] = new Student("Федор", 5);
students[4] = new Student("Маша", 5);
System.out.print("Введите курс: ");
Scanner scanner = new Scanner(System.in);
if (scanner.hasNextInt()) {
show(students, scanner.nextInt());
} else {
System.out.print("Введены некорректные данные!");
}
}
public static void show(Student[] students, int course) {
for (int i=0; i<students.length; i++) {
if (students[i].getCourse() == course) {
students[i].print();
}
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пытаюсь запустить приложение с использованием jcurses:
ЗдравствуйтеМожет ли мне кто-нибудь объяснить небольшой момент в переписки, касательно критики и предложений данного нововведедения switch-on-strings...
Пишу простенький раннер, движение объекта (того, кто бежит) симулирую сдвигом на определенное расстояние картинки на бэкграунде (фона)
Делаю лабиринтДвижение осуществляется по фрейму, в зависимости от значения в массиве map, где 1 - можно двигаться, 2 - стена