练习-Java异常处理之自定义异常之质数

任务描述

本关任务:接收给定的一个大于 1 的整数,判断该整数是否是质数,如果是的话请输出该数,如果不是的话,自定义一个异常,抛出该异常,并提示“非质数异常”。


// 请在Begin-End间编写代码
/********** Begin **********/

import java.util.Scanner;

// 第一步:自定义异常,异常名为MyException
class MyException extends Exception{
    public MyException(){

    }
    public MyException(String name){
        super(name);
    }
}

// 第二步:创建ExcTest类
public class ExcTest {
    public static void main(String[] args) throws MyException {
        // 第三步:接收给定的整数
        Scanner input = new Scanner(System.in);
        int x = input.nextInt();
        // 第四步:判断所给的整数是否为质数,如果不是,抛出自定义的异常
        boolean b = true;
        for (int i = 2;i <= x / 2;i ++){
            if (x % i == 0){
                b = false;
                break;
            }
        }
        if (b == false){
            throw new MyException("非质数异常");
        }else
        // 第五步:如果所给数是质数,请输出该数
            System.out.println(x);
    }
}
/********** End **********/

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 自定义异常的实现方法: 1. 定义一个类继承Exception或其子类 2. 在类中定义构造方法,可以带参数或不带参数 3. 在需要抛出异常的地方使用throw语句抛出该异常类的实例 4. 在调用该方法的地方使用try-catch语句捕获该异常 关于质数质数是指除了1和它本身以外,不能被其他任何数整除的数。 ### 回答2: Java异常处理Java编程中比较重要的操作之一。在Java中,有许多内置的异常类型,比如:NullPointerException、ArrayIndexOutOfBoundsException等等。但是,有时候我们需要自定义异常类型来满足我们编程的需求。这时候就需要使用Java异常处理机制中的自定义异常。一个自定义异常通常由程序员自己定义,继承自Java Exception类或者RuntimeException类。 今天,我们就来讲一讲如何练习Java异常处理自定义异常质数。 首先,我们来了解一下什么是质数质数是指在大于1的自然数中,除了1和本身以外不再有其他因数的数。比如2、3、5、7、11等等。 而我们的自定义异常类型,即PrimeNumberException类,要实现的就是当用户输入的数为非质数时,抛出此异常。 以下是PrimeNumberException类的代码及解释: ```java public class PrimeNumberException extends Exception { // 无参构造函数 public PrimeNumberException() {} // 将异常信息传入父类构造函数,并抛出异常信息 public PrimeNumberException(String message) { super(message); } // 将异常信息与原因传入父类构造函数,并抛出异常信息与原因 public PrimeNumberException(String message, Throwable cause) { super(message, cause); } // 将异常原因传入父类构造函数,并抛出异常原因 public PrimeNumberException(Throwable cause) { super(cause); } // 当前输入的数字不是质数时抛出此异常 public void checkPrimeNumber(int number) throws PrimeNumberException { if(number <= 1) { throw new PrimeNumberException("输入的数字不是质数!"); } for(int i = 2; i <= Math.sqrt(number); i++) { if(number % i == 0) { throw new PrimeNumberException("输入的数字不是质数!"); } } } } ``` 上述代码中,PrimeNumberException类继承自Java Exception类,并覆盖了Java Exception类中的四个构造函数。在checkPrimeNumber()方法中,我们首先判断输入的数字是否小于等于1,如果小于等于1,则说明该数字不是质数,我们就使用throw语句抛出一个PrimeNumberException异常,并在异常信息中说明该数字不是质数。如果输入的数字大于1,则使用for循环依次判断该数字是否能够被其它数字整除。如果该数字能够被某个数字整除,则说明该数字不是质数,我们也使用throw语句抛出一个PrimeNumberException异常。 下面是使用PrimeNumberException类的源代码: ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入一个自然数:"); int number = input.nextInt(); PrimeNumberException primeNumberException = new PrimeNumberException(); try { primeNumberException.checkPrimeNumber(number); System.out.println(number + "是质数。"); } catch(PrimeNumberException e) { System.out.println(e.getMessage()); } } } ``` 上述代码中,我们首先使用Scanner类从控制台输入一个自然数,然后创建一个PrimeNumberException对象。接着,我们在try块中使用primeNumberException.checkPrimeNumber(number)方法判断输入的数字是否为质数。如果是质数,则输出该数字是质数;否则,就会抛出PrimeNumberException异常,并在catch块中输出异常信息。 练习Java异常处理自定义异常质数,需要我们掌握Java中的异常处理机制、自定义异常的使用方法以及理解质数的含义。希望上述的代码和解释能够对您有所帮助。 ### 回答3: 在Java中,异常处理机制可以帮助我们处理程序运行中遇到的各种异常情况,比如空指针、数组越界等。Java已经提供了许多标准异常类,如NullPointerException、ArrayIndexOutOfBoundsException等。但是,有些情况可能无法使用现有的异常类进行处理,此时可以自己定义异常类,比如本次练习自定义异常类——PrimeNumberException。 在Java中,一个自定义异常类必须继承于Exception类或者其子类。我们定义一个PrimeNumberException类,让它继承于Exception类。PrimeNumberException类的功能是当一个非质数时抛出一个异常。 下面是定义PrimeNumberException类的代码: ```java public class PrimeNumberException extends Exception { public PrimeNumberException() { super("不是质数!"); } } ``` 在定义完异常类后,接下来,我们可以在程序中使用自定义异常类。本次练习要求判断一个数是否为质数,如果不是,就抛出PrimeNumberException异常。下面是一个用自定义异常类实现的计算质数的示例代码: ```java public class PrimeNumber { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入一个正整数:"); int number = input.nextInt(); try { if(!isPrime(number)) { throw new PrimeNumberException(); } else { System.out.println(number + "是质数。"); } } catch (PrimeNumberException ex) { System.out.println(number + " " + ex.getMessage()); } } // 判断一个数是否为质数 public static boolean isPrime(int number) { if(number <= 1) { return false; } for(int i = 2; i <= number / 2; i++) { if(number % i == 0) { return false; } } return true; } } ``` 在示例代码中,我们首先使用Scanner类从用户那里获取一个正整数。接下来,我们使用try-catch语句块来捕获抛出的PrimeNumberException异常。如果输入的数是质数,就输出它是质数;否则就抛出自定义异常类PrimeNumberException,并将异常消息输出到控制台中。 在本次练习中,我们使用Java异常处理机制和自定义异常类来处理程序中遇到的异常情况,有效地提高了程序的健壮性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摸鱼的三金

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值