最近开始重新学习java,看了二楼大神那时回帖似乎是刚接触java不久,于是我就写了段看得过去的java代码,仅供参考。
其实,求n的阶int乘临界值处理可以不必转换double处理,直接用测试数据做除法处理可以避免越界(具体看代码),相信看的时间长一点都可以理解的。
首先先附上工程框架图示:

程序代码:
package cn.demo;
import cn.exception.*;
import cn.exception.customException.*;
public class Test
{
public Test()
{
int i;
for (i=1;i<Integer.MAX_VALUE/10;i*=10)
testMain(i);
testMain(Integer.MAX_VALUE);
}
public void testMain(int n)
{
int result;
try
{
System.out.println("测试数据:"+n);
result=test(n);
System.out.println("运行结果为:"+result+"\n");
}
catch(CustomException e)
{
System.out.println(e.message+"\n");
}
}
private static int test(int testNum) throws IntegerException
{
int n=1;
int count=1;
if (testNum<0)
throw new IntegerException();
while (testNum/n>=count+1)
n*=++count;
return count;
}
public static void main(String[] arge)
{
new Test();
}
}

程序代码:
package cn.exception.customException;
//自定义异常类
public abstract class CustomException extends Exception
{
public String message;
public String toString()
{
return message;
}
}

程序代码:
package cn.exception;
import cn.exception.customException.*;
public final class IntegerException extends CustomException
{
public final IntegerException()
{
super.message="测试数据不能小于0";
}
}
附上运行效果图:最后算出来的结果是12
后记:其实这一行代码可以用很简洁的方法完成,关键是加入了对于测试数据是否小于0的自定义异常处理,虽然看上去不太重要,但其中重要的是设计理念以及编程细节习惯,所以写写还是有一定必要的。
当然还有工程框架结构也是重要部分,也是写框架结构的基础能力,看见这个论坛基于平台原因通常看到的帖子就只有一个自定义包。其实,将来做数据库设计那些项目的时候框架设计就很重要了。当然,这些一般比较简单的小程序处理还是这还是见仁见智吧,到底方便阅读还是挺重要的。
[此贴子已经被作者于2018-3-17 16:18编辑过]