-3

我有代码,我想知道错误在哪里,请你帮帮我:throw line 上只有一个错误

public static void main(String[] args) {
    try {
        Scanner input = new Scanner (System.in);
        System.out.println("Enter the number ");
        int x1 = input.nextInt();
        int i;
        if (x1>=0&&x1<=100) {
            i= (int) Math.pow(x1,2);
            System.out.println("the squre of  "+ x1 + " is "+ i);
        }
        else 
            throw new MyException();   // what is the error here?
    } catch(MyException me) {
        System.out.println(me);
        String message = me.getMessage();
    }
}

public class MyException extends Exception {
 public String getMessage() {
        return " the number is out of ring";
    }
    }

}
4

2 回答 2

0

首先,您的 getMessage 方法在您的 MyException 类之外。其次,你试图调用一个名为 getMessage() 的方法,这不能在 main 方法中完成,你必须调用 me.getMessage();

于 2014-10-22T00:01:27.143 回答
0

看起来你还没有完全发布你的整个班级,但是根据错误消息,它看起来像是你的班级中MyException发生的,比如:

public class TheClass {

    public static void main(String[] args) {
        ....
    }

    public class MyException extends Exception {
        ....
    }

}

这构成MyException了一个内部类。因此,每个 的实例都MyException必须“属于” 的一个实例TheClass。这就是您收到“非静态变量 this”错误消息的原因。当您说 时new MyException,您在静态main方法中,因此它无法知道TheClassMyException对象的实例属于哪个实例。

我不认为你希望这是一个内部类。要么移出MyException 要么TheClass使其成为静态:

public static class MyException extends Exception {

将其设为静态会使其成为“嵌套”类而不是“内部”类,因此它不属于TheClass. 不过,你可能想把它移到外面。我看不出有什么好理由让它在你的其他班级。

于 2014-10-22T00:18:45.577 回答