Member 12702056 Ответов: 2

Пожалуйста, помогите мне.я не могу найти ошибку в моей программе в IDE NETBEANS


public class JavaApplication19 {

    public static void main(String[] args) {
        Lesson A = new Lesson();
        Lesson B = new Lesson();
        Lesson C = new Lesson();
        Lesson D = new Lesson("CMS 202", "Applied Linear Algebra", 3, 94);
        A.setCode("CMS 205");
        B.setCode("CMS 220");
        C.setCode("GERM 201");
        A.setName("Object Oriented Programming");
        B.setName("Web Programming 1");
        C.setName("German Language 1");
        A.setNote(99);
        B.setNote(97);
        C.setNote(95);
        A.setCredit(3);
        B.setCredit(3);
        C.setCredit(3);
        Student s = new Student("Nazli Elizade");
       System.out.println("Nazli's GPA is" + s.getGPA());
             System.out.println("Nazli's GPA is" +s.getTotalcredit());
    }

}


package javaapplication19;


public class Student {

    private String name;
    private Lesson listLesson[];
    private int size = 20;
    private int number = 0;

    public Student(String name) {
        this.name = name;
        listLesson = new Lesson[size];
    }

    public void addLesson(Lesson l) {
        if (number == size)
        {
            Lesson ListNew[] = new Lesson[size + 1];
            for (int i = 0; i < size; i++) {
                ListNew[i] = listLesson[i];
            }
            listLesson = ListNew;
            size++;
        }

    }

    public double getTotalcredit() {
        double t1;
        double total = 0;
        for (int i = 0; i < number; i++) {
            if (k.getNote() > 60) {
                t1 = k.getNote() * k.getCredit();
                total += t1;
            }

        }
        return total;
    }

    public double getGPA() {
        double GPA = 0.0;
        double t1;
        double total = 0.0;
        double totalcredit=1;
        for (int i = 0; i < number; i++) {
            if (k.getNote() > 60) {
                t1 = k.getNote() * k.getCredit();
                totalcredit += k.getCredit();
                total += t1;
            }
            GPA = total / (totalcredit-1);
            return GPA;
        }


public class Lesson {

    private String code;
    private String name;
    private double note;
    private int credit;

    public Lesson() {
        this.code = null;
        this.name = null;
        this.note = 0.0;
        this.credit = 0;
    }

    public Lesson(String c, String n, double note, int cre) {
        this.code = c;
        this.name = n;
        this.note = note;
        this.credit = cre;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getNote() {
        return note;
    }

    public void setNote(double note) {
        this.note = note;
    }

    public int getCredit() {
        return credit;
    }

    public void setCredit(int credit) {
        this.credit = credit;
    }

    public String toString() {
        return ("code=" + code + " " + "name=" + name + " " + "note=" + note + " " + "credit=" + credit);
    }

}


Что я уже пробовал:

В этой программе нет никакой ошибки,но когда я ее запускаю, появляется ошибка, и она выглядит так:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - missing return statement
	at javaapplication19.Student.getGPA(Student.java:52)
	at javaapplication19.JavaApplication19.main(JavaApplication19.java:32)
C:\Users\User\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 1 second)



Когда я нажимаю на то, что указывает эта ошибка, Я достигаю функции getGPA.но, пожалуйста, помогите мне, в чем проблема в моей программе?
я хочу получить средний балл студента по этой программе.
Я искал об этом, но я не могу решить его.

[no name]

Что возвращается из этой функции, когда цикл for ничего не делает? Это именно то, что говорит вам сообщение об ошибке. Почему вы почувствовали необходимость опубликовать так много кода, который не имеет никакого отношения к вашей проблеме?

2 Ответов

Рейтинг:
6

rah_sin

Вы можете принести возвращение ГПД; заявление в сторону на петли и попробовать.


Member 12702056

большое спасибо, я пытался, но теперь проблема с переменной "k", я не знаю, как я могу ее решить?

Richard MacCutchan

Потому что нигде не инициализируется переменная k. Вы должны вернуться к своим учебным заметкам и более внимательно посмотреть на классы и объекты. Это также поможет вам использовать значимые имена переменных, а не отдельные буквы.

Рейтинг:
17

Kornfeld Eliyahu Peter

Ну же!!!
Разве вы не можете читать сообщения об ошибках и отслеживать их?

Цитата:
Исключение в потоке "основной" Java для.яз.К RuntimeException: к некомпилируемому исходный код - отсутствует оператор return

Это означает, что у вас где-то есть метод, который не возвращает значение, но должен...Поэтому он не может быть скомпилирован...
Цитата:
в javaapplication19.Студент.getGPA(студент.Ява:52)

Этот говорит вам, где вы пропустили возвращение...
Теперь заглядываю в getGPA...
public double getGPA() {
  // ...
  for (int i = 0; i < number; i++) {
    // ...         
    return GPA;
  }
}

Итак, кто вам сказал, что он войдет в цикл for?