java判断是否是自然数_java判断输入的是否是自然数

/**

* 编写一个Java应用程序的方法,该方法接收从键盘输入的自然数:

* 如果输入的数不是自然数。抛出异常,提示“请正确输入数字!”,然后继续等待用户输入。

* 如果输入的数为正数,则显示这个数,程序继续运行。

* 如果输入为负数,抛掷自定义的异常,输出错误信息后,程序终止运行。

* 如果输入的数为0,则程序终止运行。注:本题中,0不当作自然数

* 当程序终止运行时,会显示"程序退出,Bye!"。

*/

import java.util.*;

public class TestException {

static double d;

public static void main(String [] args){

System.out.println("请输入一个数字:");

//首先通过调用testA()方法,要求能接收键盘输入的数,并对输入进行异常捕获,以确定输入的是数字。

double dd = TestException.testA();

//  System.out.println(dd);

try {

//此处调用testB()方法,可用来判断在testA()方法中输入的数是否是自然数

int n = TestException.testB(dd);//

System.out.println(n + " 是自然数");

} catch (MyException e) {

// TODO Auto-generated catch block

System.out.println("程序退出,Bye!");

e.printStackTrace();

}

}

public static int testB(double dd)throws MyException{

int n = (int)dd;

//  System.out.println(n);

if(dd < 0){

throw new MyException("输入的是负数,非法!");

}

else if(dd == 0){

throw new MyException("输入的是0!");

}

else if(n == dd){

return n;

}

else{

throw new MyException("不是自然数");

}

}

public static double testA(){ //判断输入的是不是数字

Scanner in = new Scanner(System.in);

/**起初,把Scanner 的对象定义成了static 的类成员变量,

* 结果本方法中递归调用时出现循环错误,即不能二次接收try中键盘输入

* 分析:

*/

try{

d = in.nextDouble();

return d;

}catch (InputMismatchException e) {

System.out.println("请输入数字:");

testA(); //能过catch捕获,如果输入的不是数字,则重新调用输入方法,并要求重新输入

}  //如果输入的是数字,即可与double类型匹配,便不会报异常,可直接返回

return d;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值