Печать с категорией в Java с использованием метода переопределения в Java - PullRequest
0 голосов
/ 13 июня 2018

как напечатать Junior, Intermediate, Seniour в виде строки в соответствии с возрастом, и должен сгенерировать номер броска, и эти входные данные должны быть сгенерированы пользователем.Пример: младшее имя: Рахул, возраст: 22, ролл: 1000, промежуточное имя: премьер, возраст: 40, ролл: 1001, старшее имя: Вамси, возраст: 60, роллно: 1002

String name;
static int age;

public static void main(String[] args) {
    int size = 3;
    DB[] studs = new DB[size];
    for (int i = 0; i < size; i++) {
        studs[i] = readStudent(i);
    }
    for (int i = 0; i <studs.length; i++) {
        if(age <=30) {
            System.out.println( studs[i]);
        }else if(age <=40) {
            System.out.println("Intermidiate" +" "+studs[i]);
        }else {
            System.out.println("Seniour" +" "+studs[i]);
        }
    }
}


static DB readStudent(int i) {

    Scanner sc = new Scanner(System.in);
    System.out.print("Enter your name:");
    String name = sc.nextLine();
    System.out.print("Enter your age:");
    int age = sc.nextInt();
    DB studs = new DB(name, age);
    return studs;
}

}

class juniourStudent extends Student {
    String rollno = "juniour";
    static int juniourcount = 1000;

    juniourStudent(String name, int age) {
        rollno = "juniour" + juniourcount++;
    }
}

class intermidiateStudent extends Student {
    String rollno = "intermidiate";
    static int intermidiatecount = 1000;

    intermidiateStudent(String name, int age) {
        rollno = "intermidiate" + intermidiatecount++;
    }
}

class seniourStudent extends Student {
    String rollno = " seniour";
    static int seniourcount = 1000;

    seniourStudent(String name, int age) {
        rollno = "seniour" + seniourcount++;
    }
}

1 Ответ

0 голосов
/ 13 июня 2018

С вашим кодом довольно много проблем.

  1. Ваша структура классов противоречит тому, что вы пытаетесь сделать.Исходя из результатов примера, кажется, что вы хотите, чтобы rollNo увеличивался каждый раз, когда учащегося делают.Также кажется излишним создавать отдельные классы, когда единственное, что отличается между ними, - это префикс (например, младший, старший, средний и т. Д.).Вместо того, чтобы создавать несколько классов, почему бы не добавить переменную экземпляра в ваш класс ученика.(Также импортируйте Scanner, чтобы мы могли использовать его позже для пользовательского ввода, и ArrayList для хранения данных об ученике). Например:

    import java.util.Scanner;
    import java.util.ArrayList;
    public class Student {
        String name;
        String studentType;
        int age;
        int rollno;
        static int schoolRollno = 1000;
    
  2. Далее вы должны сделать правильный конструктор для вашего ученикакласс, состоящий из имени String и типа int, и присвоение их переменным экземпляра, которые мы объявили ранее.Мы назначим переменную studentType в зависимости от их возраста и получим студентов по роллно из статической переменной.Мы должны увеличить статическую переменную, чтобы у следующего ученика был другой номер броска.(Вы можете изменить сравнение по возрасту на любое нужное вам число, но эти цифры - то, что я собрал из вашего кода)

    public Student(String name, int age) {
        this.name = name;
        if(age <= 30) {
            this.studentType = "Junior";
        }
        else if(age <= 40)  {
            this.studentType = "Intermediate";
        }
        else {
            this.studentType = "Senior";
        }
        this.age = age;
        this.rollno = schoolRollno;
        schoolRollno++;
    }
    
  3. Последнее, что нам нужно сделать перед началом работыНашей основной функцией является написание метода toString () для нашего студенческого класса.Основываясь на выводе, вы можете захотеть такой метод:

    @Override
    public String toString() {
        return studentType + " name: " + name + " age: " + age + ", roll: " + rollno;
    }
    
  4. Теперь мы можем взглянуть на функцию public static void main(String args[]).У нас есть несколько вещей, которые нам нужно сделать здесь.Поскольку, похоже, мы не знаем, сколько студентов мы собираемся добавить, мы должны использовать ArrayList.Мы также должны создать наш сканер здесь:

    ArrayList<Student> students = new ArrayList<Student>();
    Scanner scan = new Scanner(System.in);
    
  5. Теперь мы должны создать цикл while, который позволит пользователю продолжать вводить студентов и желать остановиться.Лично я фанат цикла do / while, поэтому сделаю это так.Нам нужно объявить нашу переменную вне цикла, чтобы мы могли использовать ее в качестве условия для цикла.

    boolean done = false;
    do {
        //(inner loop code here)
    } while(!done);
    //end loop code
    
  6. Теперь для кода внутреннего цикла.Нам нужно получить String (имя) от пользователя и int (age).Как только мы получим входные данные, мы хотим создать объект Student и добавить его в наш ArrayList.Затем, после всего этого, мы хотим увидеть, хочет ли пользователь вводить другого студента (изменяя значение нашего логического значения, которое мы использовали при объявлении первого цикла do / while в соответствии с вводом пользователя).Мы можем сделать все это с помощью сканера следующим образом:

    System.out.println("Enter name:");
    String name = scan.nextLine();
    System.out.println("Enter age:");
    int age = scan.nextInt();
    //we use scan.nextLine() here because scan.nextInt() does not read to the end of the line
    scan.nextLine();
    Student s = new Student(name, age);
    students.add(s);
    boolean validInput = true;
    do {
        validInput = true;
        System.out.println("Continue? (y/n)");
        String input = scan.nextLine();
        if(input.equalsIgnoreCase("y")) {
            done = false;
        }
        else if(input.equalsIgnoreCase("n")) {
            done = true;
        }
        else {
            validInput = false;
        }
     } while(!validInput);
    
  7. Наконец, мы хотим напечатать студентов, как только мы закончим.Мы можем легко распечатать всех студентов в нашем ArrayList, используя цикл for-each.(Это относится к концу нашего main(String args[]) метода)

    for(Student s: students) {
        System.out.println(s.toString());
    }
    

TL; DR:

  1. Объедините ваши классы в один ученический класс
  2. Исправьте конструктор
  3. Добавьте toString() метод
  4. Используйте ArrayList для хранения учеников, поскольку мы не знаем число.(DB не является классом в java, а массив нелогичен, когда вы не знаете, какой размер вам нужен)
  5. Создайте цикл, из которого пользователь может выйти, когда захочет
  6. Получите пользовательский ввод для имени и возраста и используйте его для создания объекта ученика и добавления его в ArrayList
  7. Распечатайте всех учеников в ArrayList после цикла
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...