Java,绘制运行时堆栈

时间:2013-08-03 02:22:02

标签: java runtime callstack

任何人都可以帮我从评论 HERE 中为以下代码绘制运行时堆栈吗?我试过这个,但被告知这是不正确的,我的教授拒绝解释这个......如果有人能给我一个例子,那么将它作为另一段代码的比较将很容易。 具体来说,我相信我没有正确格式化堆栈。

我的尝试:

array a initialized with 3 values
integer x = 4;
call method b, passes in array a.
integer i = 14;
array x[0] = 4;
call method e, passes in i - 2 = 12;
calls method f 12 - 4 = 8;
int j = 2;
8 * 2 = 16;
println "16";
println "4 + 0"

public class RuntimeStack
{
  public static void main (String [] args)
  {
  int[] a = new int[3];
  int x = 4;
  b(a);
  System.out.println(a[0] + “ “ + a[1] + “ “ + x);
}
public static void e(int a)
{
f(a-4);
// HERE! }
  public static void b(int [] x)
  {
    int i = 14;
    x[0] = 4;
    e(i-2);
}
  public static void f(int i)
  {
int j = 2;
    System.out.println("i * j = " + (i * j));
  }
} // end class RuntimeStack

非常感谢!

2 个答案:

答案 0 :(得分:1)

我的猜测是他想要一个用堆栈中的值按照它们放在堆栈中的顺序绘制的图表(并且可能被删除)。如果你有一个方法调用第二个方法传入参数,每次他们可能需要参数列表和呼叫的返回信息等,这将是我最好的猜测他们想要的。

答案 1 :(得分:0)

继续你离开的地方:

call method e, passes in 12  
call method f, passes in 8  
integer j = 2  
print "i * j = " + 16  
print 4 + " " + 0 + " " + 4