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

第1关:练习-Java异常处理之自定义异常之质数


任务描述

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

编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,接收给定的一个大于 1 的整数,判断该整数是否是质数,如果是的话请输出该数,如果不是的话,自定义一个异常,抛出该异常,并提示“非质数异常”。

注意:请确保抛出异常的行位于第 38 行。

测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。

可在右侧 “测试结果”区查看具体的测试集详情。 示例: 输入:

  1. 5

输出:

  1. 5

输入:

  1. 4

输出:

  1. Exception in thread "main" MyException: 非质数异常
  2. at ExcTest.main(ExcTest.java:38)

开始你的任务吧,祝你成功!


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

import java.util.Scanner;

// 第一步:自定义异常,异常名为MyException
class MyException extends Exception{
    public MyException (String string){
        super (string);
    }
}
// 第二步:创建ExcTest类
public class ExcTest{
// 第三步:接收给定的整数
    public static void main(String[] args) throws Exception{
        Scanner input =new Scanner (System.in);
        int n=input.nextInt();
        if(n==2){
            System.out.print(n);
            System.exit(0);
        }


// 第四步:判断所给的整数是否为质数,如果不是,抛出自定义的异常
for (int i=2;i<n;i++){
            if(n%i==0){
                throw new MyException("非质数异常");
            }
            else System.out.print(n);
        }
    }         
// 第五步:如果所给数是质数,请输出该数

}
/********** End **********/

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值