我正在尝试调用DevideByZeroo,但一直说找不到符号。
我已经尝试将其更改为super,但我一直在变红。
package CatchBlock;
import java.util.Scanner;
import java.util.InputMismatchException;
/**
*
* @author Moe
*/
public class catchblock {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
boolean invalid = true;
Scanner Pad = new Scanner(System.in);
int i1 = 0, i2 = 0;
double r = 0;
while(invalid)
{
try{
System.out.print("Enter first Integer: ");
i1 = Pad.nextInt();
System.out.print("Enter second integer: ");
i2 = Pad.nextInt();
if(i2 == 0)
DevideByZeroo("Cannot divide by Zero");
r = (double) i1/i2;
invalid = false;
}
catch(InputMismatchException e) {
Pad.nextLine();
System.out.println("Please enter a number.");
}
catch(DevideByZeroo e)
{
Pad.nextLine();
System.out.println(e.GetMessage());
}
}
System.out.println(i1 + " divided by " + i2 + " is " + r + ".");
}
}
和
package CatchBlock;
/**
*
* @author Moe
*/
public class Divide extends catchblock {
public String DevideByZeroo() {
return "Error: Dividing by Zero is impossible";
}
public String DevideByZeroo(String message){
return message;
}
}
应该问一些整数,并确保我们不被零除。现在我遇到了无法在另一个文件中查看该类的问题。
答案 0 :(得分:0)
由于要使用自定义异常,因此需要扩展Exception类。您还应该在自定义异常类的名称末尾添加“ Exception”一词。因此,用于DevideByZeroo类的代码应如下所示:-
package CatchBlock;
public class DevideByZerooException extends Exception {
DevideByZerooException() {
super("Error: Dividing by Zero is impossible");
}
DevideByZerooException(String message){
super(message);
}
}
因此,您的catchblock类的代码也将更改为:-
package CatchBlock;
import java.util.Scanner;
import java.util.InputMismatchException;
/**
*
* @author Moe
*/
public class catchblock {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
boolean invalid = true;
Scanner Pad = new Scanner(System.in);
int i1 = 0, i2 = 0;
double r = 0;
while(invalid)
{
try{
System.out.print("Enter first Integer: ");
i1 = Pad.nextInt();
System.out.print("Enter second integer: ");
i2 = Pad.nextInt();
if(i2 == 0)
throw new DevideByZerooException("Cannot divide by Zero");
r = (double) i1/i2;
invalid = false;
}
catch(InputMismatchException e) {
Pad.nextLine();
System.out.println("Please enter a number.");
}
catch(DevideByZerooException e)
{
Pad.nextLine();
System.out.println(e.getMessage());
}
}
System.out.println(i1 + " divided by " + i2 + " is " + r + ".");
}
}
作为良好做法的一部分,您应该将软件包名称保留为小写字母,并以大写字母开头的类名和最好使用名词的类。
答案 1 :(得分:0)
您正在尝试为不存在的异常类使用名称。
Exception
或Error
结尾。ArithmeticException
;参见javadoc。如果DevideByZeroo
应该是自定义例外:
这不是抛出异常的方式:
DevideByZeroo("Cannot divide by Zero");
应该是:
throw new DevideByZeroo("Cannot divide by Zero");
您需要声明DevideByZeroo
类。如果您在与主类相同的程序包中声明它,则无需import
。 (您不“附加”课程!)
在现有标准类已经存在时声明自定义类通常是一个坏主意。但是,如果您确实定义了一个自定义类,则应遵循Java约定:
Exception
结尾。因为在类和方法名称中看到拼写错误确实使人不快。就像一个孩子在黑板上刮指甲一样!如果您的拼写不好,请使用在线词典。
我注意到这一点:
public class Divide extends catchblock {
...
}
那不是在声明异常类。
您在这里犯了很多错误,我认为您可以做的最好的事情是阅读有关异常的 entire Oracle Java教程课程:
这说明了如何声明自定义异常类。阅读!