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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Novice.Jin 中级黑马   /  2015-1-24 22:22  /  1509 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Novice.Jin 于 2015-1-25 08:04 编辑

类 NarcissusNumber
  • java.lang.Object

    • NarcissusNumber


  • public class NarcissusNumberextends java.lang.ObjectNarcissusNumber   水仙花数是指一个 n 位数 ( n≥3 )  它的每个位上的数字的 n 次幂之和等于它本身。 (例如:1^3 + 5^3+ 3^3 = 153)
    版本:V1.1作者:Novice


    • 方法概要All Methods Static MethodsConcrete Methods
      限定符和类型方法和说明
      static booleanjudgeNum(long num) judgeNum 用于判断一个数是否是水仙花数
      static java.lang.StringjudgeSpace(long numStart,          long numOver) judgeSpace 判断两个数之间的水仙花数

      • 从类继承的方法 java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait




  • 构造器详细资料
    • NarcissusNumberpublic NarcissusNumber()


  • 方法详细资料
    • judgeNumpublic static boolean judgeNum(long num)judgeNum 用于判断一个数是否是水仙花数
      参数:num - 需要判断的数,需要大于100          返回:是水仙花数则返回true,否则返回false,小于100返回false
    • judgeSpacepublic static java.lang.String judgeSpace(long numStart, long numOver)judgeSpace 判断两个数之间的水仙花数
      参数:     numStart - 开始的数值          numOver - 结束的数         值返回:返回一个次方有水仙花数的字符串,每个水仙花数用"\n"分隔







  1. <p>/**
  2. * NarcissusNumber
  3. * 水仙花数是指一个 n 位数 ( n≥3 )
  4. * 它的每个位上的数字的 n 次幂之和等于它本身。
  5. * (例如:1^3 + 5^3+ 3^3 = 153)
  6. *
  7. * @author Novice
  8. * @version V1.1
  9. *class NarcissusNumber {
  10. //用于次方水仙花数
  11. private static long nNum;
  12. //用于存放水仙花数的基数
  13. private static int n;
  14. //用于取得数值的位数,小于1时n=0
  15. private static void countN(){
  16.   for(int i = 0;i < 20;i++ ){
  17.    int x = 1;
  18.    for(int j = 0;j < i;j++)
  19.     x *= 10;
  20.    if(nNum < x){
  21.     n = i;
  22.     break;
  23.    }
  24.   }
  25. }
  26. //取得x的n(基数)次方
  27. private static int countN(int x){
  28.   int y = x;
  29.   for(int i = 1;i < n;i++)
  30.    y *= x;
  31.   return y;
  32. }
  33. //取得各个位上的数
  34. private static int[] countSplit(){
  35.   countN();
  36.   int[] split = new int[n];
  37.   for(int i = 0;i < n;i++){
  38.    int x = 1;
  39.    for(int j = 0;j < i;j++)
  40.     x *= 10;
  41.    split[i] = (int)nNum/x%10;
  42.   }
  43.   return split;
  44. }
  45. //取得各个位n(基数)次冥相加的结果
  46. private static long countAdd(){
  47.   long add = 0;
  48.   int[] split = countSplit();
  49.   for(int i = 0;i < n;i++){
  50.    add += countN(split[i]);
  51.   }
  52.   return add;
  53. }
  54. /**
  55.   * judgeNum 用于判断一个数是否是水仙花数
  56.   * @param num 需要判断的数,需要大于100
  57.   * @return 是水仙花数则返回true,否则返回false,小于100返回false
  58.   */
  59. public static boolean judgeNum(long num){
  60.   nNum = num;
  61.   if((num > 100)&&(num == countAdd()))
  62.    return true;
  63.   return false;
  64.      
  65. }
  66. /**
  67.   * judgeSpace 判断两个数之间的水仙花数
  68.   * @param numStart 开始的数值
  69.   * @param numOver  结束的数值
  70.   * @return 返回一个次方有水仙花数的字符串,每个水仙花数用"\n"分隔
  71.   */
  72. public static String judgeSpace(long numStart,long numOver){
  73.   String str = "";
  74.   for(long i = numStart;i < numOver;i++){
  75.    if(judgeNum(i))
  76.     str += (i + "\n");
  77.   }
  78.   return str;
  79. }</p><p>public class Test {</p><p>public static void main(String[] args) {
  80.   System.out.println(NarcissusNumber.judgeNum(24678050));
  81.   System.out.println(NarcissusNumber.judgeSpace(0,99999));
  82. }</p>
复制代码




  • NarcissusNumber.zip (21.8 KB, 下载次数: 47)




QQ截图20150124220912.png (18.94 KB, 下载次数: 11)

QQ截图20150124220912.png

2 个回复

倒序浏览
终于完成今天的作业(自己给自己布置的)了
回复 使用道具 举报
仙花束,,,,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马