Реализация метода в Java, который принимает объект в качестве параметра - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь реализовать метод printDegreeClassification, который распечатывает классификацию степеней, учитывая среднюю оценку студента.Метод должен принимать один аргумент объекта типа Student и не возвращать никакого значения.У ученика класса есть следующий метод: public int getAverage ();И классификация следующим образом: Первая 70+, Верхняя Вторая 60-67, Нижняя Вторая 50-59, Третья 40-49, Пропуск 30-39, Ошибка 0-29

Мой код:

public void printDegreeClassification(Student a){
    int b  = a.getAverage();

         if (b>=70){
             System.out.println("First");    
         }else if(b>=60){ 
              System.out.println("Upper Second");    
         }else if(b>=50){ 
              System.out.println("Lower Second");             
         }else if(b>=40){ 
             System.out.println("Third");    
         }else if(b>=30){ 
             System.out.println("Pass");    
         }else{ 
             System.out.println("Fail");    
         }


public class Student {
        public int getAverage();
   }


    public static void main(String[] args) {
        Student result = new Student();
        result.printDegreeClassification(result);
    }
}

Я прав?Это моя первая в истории Java-программа.

Ответы [ 4 ]

0 голосов
/ 30 мая 2018

Когда вы учитесь, учитесь правильно.Ниже ваша модульная программа.Близко к тому, что мы правы в проектах, которые запускаются:

StudentDto.java Класс, который инкапсулирует свойства объекта ученика.Поля являются частными и имеют свои методы получения / установки для доступа / изменения соответствующего поля.

public class StudentDto {

    private int average;

    public StudentDto(int average) {
        this.average = average;
    }

    public int getAverage() {
        return average;
    }

    public void setAverage(int average) {
        this.average = average;
    }   
}

StudentUtil.java Оценка степени, основанная на средних оценках, является вспомогательным методом и должна сохранятьсяпод общим классом утилит, содержащим все служебные методы.Обратите внимание, что эти методы должны быть static , поскольку они не привязаны ни к какому объекту.

Поскольку вы используете только одно свойство объекта ученика для оценки степени, нет необходимости передавать сам объект, просто передайте среднее значение.И этот метод должен возвращать значение вызывающему методу.

public class StudentUtil {

    public static String getDegreeClassification(int averageMarks) {
        String degreeClassification = null;
        if (averageMarks >= 0) {
            if (averageMarks >= 70) {
                degreeClassification = "First";
            } else if (averageMarks >= 60) {
                degreeClassification = "Upper Second";
            } else if (averageMarks >= 50) {
                degreeClassification = "Lower Second";
            } else if (averageMarks >= 40) {
                degreeClassification = "Third";
            } else if (averageMarks >= 30) {
                degreeClassification = "Pass";
            } else {
                degreeClassification = "Fail";
            }
        } else {
            degreeClassification = "Average cannot be less than ZERO";
        }
        return degreeClassification;
    }
}

Student.java - это класс, в котором находится основной метод.Этот класс откуда приложение запускает.Основной метод не должен храниться ни в каких доменных объектах, таких как Студент, Учитель и т. Д.,

public class Student {

    public static void main(String[] args) {
        StudentDto studentDto = new StudentDto(50);
        String degree = StudentUtil.getDegreeClassification(studentDto.getAverage());
        System.out.println(degree);
    }
}

Надеюсь, это полезно для вас!

0 голосов
/ 29 мая 2018

Предположим, что где-то в Student есть поле с именем grades:

private int [] grades = /*some declaration*/
public class Student {
    public int getAvarage(){
         int sum = 0;
         for (int d : grades) sum += d;
         double average = ((double)sum) / grades.length; // to let the result be double
         return (int) average; // back to integer
    };
}

Это должно работать.

0 голосов
/ 29 мая 2018

Вам нужно установить среднее значение в классе ученика, тогда вы сможете получить и сравнить его: вы можете попробовать следующее:

public class Student {
    private int average;

    public int getAverage() {
        return average;
    }

    public void setAverage(int average) {
        this.average = average;
    }
    public static void main(String[] args) {
         Student result = new Student();
         result.setAverage(45);
         printDegreeClassification(result);
    }

    public static void printDegreeClassification(Student s){
        if(s!=null && s.getAverage()>0){
             int b  = s.getAverage();
             if (b>=70){
                 System.out.println("First");    
             }else if(b>=60){ 
                  System.out.println("Upper Second");    
             }else if(b>=50){ 
                  System.out.println("Lower Second");             
             }else if(b>=40){ 
                 System.out.println("Third");    
             }else if(b>=30){ 
                 System.out.println("Pass");    
             }else{ 
                 System.out.println("Fail");    
             }
        }
    }
}
0 голосов
/ 29 мая 2018

Нет не правильно, потому что вы не реализуете функцию get и не инициализируете avarage

public class Student {
    public int avarage;

    public Student(){
        this.avarage = 0;
    }

    public int getAvarage(){
      return this.avarage;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...