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;
 }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值