Scroll to top

20175234 2018-2019-2 个人项目:数字黑洞

黑洞简介

数字黑洞是什么(以下链接可以直达,单个详细博客)

对于数学黑洞,无论怎样设值,在规定的处理法则下,最终都将得到固定的一个值,再也跳不出去了,就像宇宙中的黑洞可以将任何物质,以及运行速度最快的光牢牢吸住,不使它们逃脱一样。

西西弗斯黑洞

西西弗斯黑洞,即123黑洞,对任一整数,不断重复数出这个数中的偶数个数,奇数个数,及这个数中所包含的所有位数的总数,将数整理为“偶数个数,奇数个数,总位数”排列,最后必得出123的结果。

冰雹猜想

冰雹猜想是指,一个自然数x,如果是奇数就乘以3再加1,如果是偶数就析出偶数因数2ⁿ,这样经过若干个次数,最终回到1。

圣经数

任写一个3的倍数(正整数),把各位数字的立方相加,得出和,再把和的各位数字立方后相加,如此反复进行,最后必然出现“圣经数”。

数字黑洞1和4

数学黑洞1和4是指任取一个非0自然数,求出它的各个数位上数字的平方和,得到一个新数。再求出这个新数各个数位上数字的平方和,又得到一个新数。如此进行到最后只有两种情况: 出现1,之后永远都是1;出现4,之后开始按4、16、37、58、89、145、42、20循环。

需求分析

  • 根据用户选择的黑洞类型,验证用户输入的正整数的黑洞情况。

功能设计

  • 实现用户想要验证的黑洞类型。
  1. 西西弗斯黑洞
  2. 冰雹猜想
  3. 圣经数
  4. 数字黑洞1和4

  • 能够实现处理异常输入值,如float型或者char型

测试运行

1.异常输入测试

2.调用其他包内类结果测试

其他测试结果,可由上面链接,进入单个博客查看

设计实现

  1. 用户界面 :实现读取用户输入的黑洞类型
  2. 判断输入值是否合法
  3. 调用所需要的类型
  4. 计算、验证黑洞情况

核心代码及码云链接

1.异常输入处理,代码如下

import java.util.Scanner;
public class Testint {
    public int Testint(){
        {
            Scanner sc = new Scanner(System.in);
            String x;
            int count = 0;
            while (count < 3) {
                try {
                    x = sc.nextLine();
                    //以获取字符串形式获取输入值
                    if (Integer.valueOf(x) instanceof Integer) {
                    //判断输入值是否为int型,Integer为int的包装类
                        int i = Integer.parseInt(x);
                        return i;
                    }
                } catch (Exception e) {
                    System.out.println("警告!!!您需要输入正整数.");
                    count++;
                }
            }
            System.out.println("错误次数过多,您的请求被拒绝!");
            return -1;
        }
    }
}

其中next() 方法会使得出现如下情况,所以必须需要nextLine()

instanceof是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,具体用法可参考instanceof的用法

2.调用其他包中函数import 包名.函数名,例子如图

3.计算整数的数据长度

除了简单的递归除以10以外,可以使用Java提供的为int提供的封装类Integer,以下是构造方法和常用方法摘要。



修改路上的坎坎坷坷

尝试一
调用其他主函数主函数名.main(null)

为了使程序更加的整齐规范,还是将这个用法废弃了。

尝试二
在尝试更改类名、包名时,我看到了重构的方便

总结

1. 要尽量按照驼峰规则命名,并且按照其英语名称命名,增加后期整理总结可读性。
2. 在前期写单个函数时就要尽量遵守SOLID规则,后期的修改更为麻烦。

PSP

步骤 耗时(分钟) 百分比
需求分析 50 14.2%
设计 40 11.4%
代码实现 120 34.2%
测试 20 5%
分析总结 120 34.2%

参考资料

posted @ 2019-05-16 20:03  September_starlet  阅读(506)  评论(2编辑  收藏  举报
动态线条
动态线条end