Java 异常遇到了一个问题 ,,谢谢大家帮我

zcqzcq 2007-09-20 03:57:46
import java.util.*;
public class StackTraceTest
{
public static int factorial(int n)
{
System.out.println ("factorial("+ n +"):");
Throwable t=new Throwable();
StackTraceElement[] frames=t.getStackTrace();
for(StackTraceElement f:frames)
System.out.println (f);
int r;
if(n<=1)
r=1;
else
r=n*factorial(n-1);
System.out.println ("return"+r);
return r;

}
public static void main (String[] args)
{
Scanner in =new Scanner(System.in);
System.out.println ("shuru:");
int n=in.nextInt();
factorial(n);
}

}

谁能告诉我这个代码是什么 意思 最好每行加上注释上我理解。 真的不懂。。。
谢谢大家 或者加我的QQ48187537
...全文
112 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
aaa2003gf 2007-09-20
  • 打赏
  • 举报
回复

JDK解释,其它的就是for循环输出. new的那个对象是干什么的没代码没法说.

getStackTrace
public StackTraceElement[] getStackTrace()返回一个表示该线程堆栈转储的堆栈跟踪元素数组。如果该线程尚未启动或已经终止,则该方法将返回一个零长度数组。如果返回的数组不是零长度的,则其第一个元素代表堆栈顶,它是该序列中最新的方法调用。最后一个元素代表堆栈底,是该序列中最旧的方法调用。
如果有安全管理器,并且该线程不是当前线程,则通过 RuntimePermission("getStackTrace") 权限调用安全管理器的 checkPermission 方法,查看是否可以获得堆栈跟踪。

某些虚拟机在某些情况下可能会从堆栈跟踪中省略一个或多个堆栈帧。在极端情况下,没有该线程堆栈跟踪信息的虚拟机可以从该方法返回一个零长度数组。


返回:
StackTraceElement 数组,每个数组代表一个堆栈帧。
抛出:
SecurityException - 如果安全管理器存在,并且其 checkPermission 方法不允许获得线程的堆栈跟踪。
从以下版本开始:
1.5
另请参见:
约翰羊 2007-09-20
  • 打赏
  • 举报
回复
帮顶

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧