我有代码,我想知道错误在哪里,请你帮我:投掷线上只有一个错误
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";
}
}
}
首先,getMessage方法在MyException类之外。其次,您试图调用一个名为getMessage()的方法,这在主方法中是无法完成的,您必须调用me.getMessage();
看起来您还没有完全发布整个类,但根据错误消息,MyException
似乎出现在您的类中,类似于:
public class TheClass {
public static void main(String[] args) {
....
}
public class MyException extends Exception {
....
}
}
这使得MyException
成为内部类。因此,MyException
的每个实例都必须"属于"TheClass
的一个实例。这就是为什么您会得到"非静态变量this"错误消息。当你说new MyException
时,你在静态main
方法中,所以它无法知道新的MyException
对象将属于TheClass
的哪个实例
我认为你不希望这是一个内部阶级。将MyException
移动到TheClass
的外部,或者使其静止:
public static class MyException extends Exception {
使其为静态将使其成为"嵌套"类,而不是"内部"类,这样它就不属于TheClass
的实例。不过,你可能想把它搬到外面去。我看不出有什么好的理由把它放在你的另一个班上。