-1

ここで何が問題なのかわからないコードを実行すると、このエラーが発生します。

Exception in thread "main" java.lang.VerifyError: (class: first3weeks/Main, method: <init> signature: ()V) Constructor must call super() or this()
Java Result: 1

学生コード:

package first3weeks;   

public class Student {
    private String name, id;
    private int[] score = new int[3];


    public Student(){}

    public Student(String stName, String stID, int stScore[]){
        name = stName;
        id = stID;
        score = stScore;
    }

    public void setName(String nameIn){
        name = nameIn;
    }

    public void setID(String idIn){
        id = idIn;
    }

    public void setScore(int scoreIn[]){
        score = scoreIn;
    }

    public String getName(){
        return name;
    }

    public String getID(){
        return id;
    }

    public int[] getScore(){
        return score;
    }

    public double avScore(){
        double total = score[1] + score[2] + score[3];
        return (total/3);
    }

    public void printOut(){
        System.out.println("Student Name: " + getName() + "\n" + "Student ID: " + getID() + "\n" + "Student Average: " + avScore());
    }
}

メインクラス:

package first3weeks;

public class Main {

    public static void main(String[] args) {
        int[] score1 = {12,15,19};
        int[] score2 = {32,65,29};
        Student stud1 = new Student("Rob", "001", score1);
        Student stud2 = new Student("Jeff", "002", score2);
        stud1.printOut();
        stud2.printOut();

        Student stud3 = new Student();
        int[] score3 = {56,18,3};
        stud3.setName("Richard");
        stud3.setID("003");
        stud3.setScore(score3);
        stud3.printOut();
    }
}
4

2 に答える 2

2

このエラー

Exception in thread "main" java.lang.VerifyError: (class: first3weeks/Main, 
    method: <init> signature: ()V) Constructor must call super() or this()

バイトコードが正しく生成されていないことを意味します。これは、コンパイラのバグである可能性があります。Java 7 update 40 または Java 6 update 45 のいずれかの最新の更新があることを確認します。

于 2013-10-13T15:08:50.737 に答える
1

Java のバージョンを使用してコードを実行しまし1.7.0_17たが、唯一の例外はjava.lang.ArrayIndexOutOfBoundsException: 3.** です。

Java では、Array は 0 から始まるインデックスです。つまり、最初の要素のインデックスは 0 であるため、メソッドで次のようにavScoreする必要があります。

 public double avScore(){
       double total = score[0] + score[1] + score[2];
       return (total/3);
 }
于 2013-10-13T15:05:37.893 に答える