Java编译错误:线程“main”java.lang.VerifyError中的异常:

时间:2013-10-13 14:59:10

标签: java compiler-errors

当我运行我的代码时,我收到此错误,不知道这里有什么问题:

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();
    }
}

2 个答案:

答案 0 :(得分:2)

此错误

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

表示尚未正确生成字节代码。这可能是编译器中的错误。我会确保您拥有Java 7更新40或Java 6更新45的最新更新。

答案 1 :(得分:1)

我使用java的1.7.0_17版本运行您的代码,我得到的唯一例外是java.lang.ArrayIndexOutOfBoundsException: 3。**

在java中,Array是从零开始的索引,即第一个元素的索引为零,所以在方法avScore中你应该这样做:

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