A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 栗俊植 于 2013-4-7 22:38 编辑

/*
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 1.程序分析:利用辗除法。
*/
import java.util.*;
class GongShu {
        public static void main(String[] args) {
                gong();
        }
        public static void gong() {
                Scanner cn = new Scanner(System.in);
                System.out.println("请输入要计算公约公倍的两个数,空格为界限!");
                int a = cn.nextInt();
                int b = cn.nextInt();
                /*
                方法一:

                if(a>=1&&b>=1) {
                        int x = 0;
                        for(int i=1;i<=a;i++) {
                                if(a%i==0&&b%i==0) {
                                        x=i;
                                }
                        }
                        System.out.println(a+"和"+b+"的最大公约数是:"+x);
                        if(a>=b) {
                                for(int i=a;i<a*b;i++) {
                                        if(i%a==0&&i%b==0) {
                                                System.out.println(a+"和"+b+"的最小公倍数是"+i);
                                                break ;
                                        }
                                }
                        }else {
                                for(int i=b;i<a*b;i++) {
                                        if(i%a==0&&i%b==0) {
                                                System.out.println(a+"和"+b+"的8最小公倍数是"+i);
                                                break ;
                                        }
                                }
                        }
                }else System.out.println("请输入两个大于等于1的正整数!");

                */


                //方法二:

                int x=1,c=0;
                if(a>=0&&b>=0) {
                        while(x<=a&&x<=b) {
                                if(a%x==0 && b%x==0) {
                                        c = x;
                                }
                                x++;
                        }
                        System.out.println(a+"和"+b+"的最大公约数是:"+c);
                        int y = 0;
                        if(a>=b);
                                y = a;
                        y = b;
                        a:while(y>=a && y>=b) {
                                b:if(y%a==0 && y%b==0) {
                                        System.out.println(a+"和"+b+"的最小公倍数是"+y);
                                        break a;
                                }
                                y++;
                        }
                }
                else System.out.println("请输入两个大于等于1的正整数!");
        }
}
/*
我想让在DOS窗口中输入double类型的数时抛出一个自定义的输入数据类型错误的提示异常!
或者就像最后一个输出语句那样打印出输入数据类型错误的提示也可以怎么做啊??
*/

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

12 个回复

倒序浏览
邓会楠会噢{:soso_e120:}
回复 使用道具 举报
java.lang.NumberFormatException
回复 使用道具 举报
张昶 发表于 2013-4-7 22:15
java.lang.NumberFormatException

能稍微具体点吗? 或者把代码补全也可以!谢谢了 !
回复 使用道具 举报

在dos下输入a=5.5本就有提示错误的啊

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 五分以下,鼓励一下~

查看全部评分

回复 使用道具 举报
没仔细看程序,不过我告诉你思路.

先定义一个自定义异常

class ShuJuLeiXingException extends RuntimeException
{
    ShuJuLeiXingException(String message)
       super(message);
}


然后再你获取要进行运算数据的语句下面
加入 判断
如果数据不满足
添上

if(数据不满足)
     throw new ShuJuLeiXingException("数据类型发生异常");
抛出你自定义的数据类型异常
因为数据类型不对,那么程序就没有继续执行的必要了.所以自定义异常继承的 RuntimeException   
也就是 不用try catch了 直接抛出 结束程序

如果你想进行处理的话,就自定义异常继承 Exception就好了
然后自行加入 处理方式.

如果你获取数据的方法是在成员位置上,请将if定义在 具体 的方法中.

if在不能使用在成员变量位置上.

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
小菜凉碟 发表于 2013-4-7 22:17
在dos下输入a=5.5本就有提示错误的啊

我想抛出一个自定义的异常,怎么做!
回复 使用道具 举报
  1. import java.util.*;
  2. class GongShu {
  3.         public static void main(String[] args) {
  4.                
  5.                                 try{
  6.                                         gong();
  7.                                        
  8.                                 }
  9.                                  catch (Exception e){
  10.                            System.out.println("请输入两个大于等于1的正整数!");
  11.                }
  12.         }
  13.         public static void gong() {
  14.                
  15.               
  16.                                   Scanner cn = new Scanner(System.in);
  17.                                          System.out.println("请输入要计算公约公倍的两个数,空格为界限!");
  18.                                    int a = cn.nextInt();
  19.                    int b = cn.nextInt();
  20.                                
  21.                
  22.               
  23.                 /*
  24.                 方法一:

  25.                 if(a>=1&&b>=1) {
  26.                         int x = 0;
  27.                         for(int i=1;i<=a;i++) {
  28.                                 if(a%i==0&&b%i==0) {
  29.                                         x=i;
  30.                                 }
  31.                         }
  32.                         System.out.println(a+"和"+b+"的最大公约数是:"+x);
  33.                         if(a>=b) {
  34.                                 for(int i=a;i<a*b;i++) {
  35.                                         if(i%a==0&&i%b==0) {
  36.                                                 System.out.println(a+"和"+b+"的最小公倍数是"+i);
  37.                                                 break ;
  38.                                         }
  39.                                 }
  40.                         }else {
  41.                                 for(int i=b;i<a*b;i++) {
  42.                                         if(i%a==0&&i%b==0) {
  43.                                                 System.out.println(a+"和"+b+"的8最小公倍数是"+i);
  44.                                                 break ;
  45.                                         }
  46.                                 }
  47.                         }
  48.                 }else System.out.println("请输入两个大于等于1的正整数!");

  49.                 */


  50.                 //方法二:

  51.                 int x=1,c=0;
  52.                 if(a>=0&&b>=0) {
  53.                         while(x<=a&&x<=b) {
  54.                                 if(a%x==0 && b%x==0) {
  55.                                         c = x;
  56.                                 }
  57.                                 x++;
  58.                         }
  59.                         System.out.println(a+"和"+b+"的最大公约数是:"+c);
  60.                         int y = 0;
  61.                         if(a>=b);
  62.                                 y = a;
  63.                         y = b;
  64.                         a:while(y>=a && y>=b) {
  65.                                 b:if(y%a==0 && y%b==0) {
  66.                                         System.out.println(a+"和"+b+"的最小公倍数是"+y);
  67.                                         break a;
  68.                                 }
  69.                                 y++;
  70.                         }
  71.                 }
  72.                 else System.out.println("请输入两个大于等于1的正整数!");
  73.         }
  74. }
复制代码
加一个try{}
catch(){}
就可以了,

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
李芳池 发表于 2013-4-7 22:27
加一个try{}
catch(){}
就可以了,

谢谢!  :handshake
回复 使用道具 举报
曹宇 发表于 2013-4-7 22:18
没仔细看程序,不过我告诉你思路.

先定义一个自定义异常

谢谢!:handshake
回复 使用道具 举报
受教了
回复 使用道具 举报
  1. public class GongShu {
  2.          public static void main(String[] args) throws NewException {
  3.          gong();
  4. }
  5. public static void gong() throws NewException {
  6.          Scanner cn = new Scanner(System.in);
  7.          System.out.println("请输入要计算公约公倍的两个数,空格为界限!");
  8.          int a;
  9.                 int b;
  10.                 try {
  11.                         a = cn.nextInt();
  12.                          b = cn.nextInt();
  13.                 } catch (InputMismatchException e) {
  14.                         // TODO Auto-generated catch block
  15.                         throw new NewException("错啦");
  16.                 }
复制代码
自定义异常类
  1. public class NewException extends Exception {

  2.         public NewException(String message) {
  3.                 super(message);
  4.         }

  5. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
小菜凉碟 发表于 2013-4-7 22:17
在dos下输入a=5.5本就有提示错误的啊

谢谢陈姐
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马