黑洞简介
数字黑洞是什么(以下链接可以直达,单个详细博客)
对于数学黑洞,无论怎样设值,在规定的处理法则下,最终都将得到固定的一个值,再也跳不出去了,就像宇宙中的黑洞可以将任何物质,以及运行速度最快的光牢牢吸住,不使它们逃脱一样。
西西弗斯黑洞
西西弗斯黑洞,即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和4
- 能够实现处理异常输入值,如float型或者char型
测试运行
1.异常输入测试
2.调用其他包内类结果测试
其他测试结果,可由上面链接,进入单个博客查看
设计实现
- 用户界面 :实现读取用户输入的黑洞类型
- 判断输入值是否合法
- 调用所需要的类型
- 计算、验证黑洞情况
核心代码及码云链接
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% |
参考资料
来源:https://www.cnblogs.com/ysz-123/p/10877113.html