我如何附加两个文件,据说可以连接它们,但无法正常工作,并且不断出现错误

时间:2019-04-28 03:54:17

标签: java

我正在尝试调用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;
    }
}

应该问一些整数,并确保我们不被零除。现在我遇到了无法在另一个文件中查看该类的问题。

2 个答案:

答案 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)

您正在尝试为不存在的异常类使用名称。

  • 拼写错误。 “除以零”而不是“除以零”
  • 任何标准异常都将以ExceptionError结尾。
  • 实际上,除以零时会抛出的标准异常是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教程课程:

这说明了如何声明自定义异常类。阅读!