public class New1 {
public static void main(String[] args) {
int x = 0;
int cost = 1;
int y = 0;
int g = 0;
Stack<Stack<Integer>> stack = new Stack<>();//stackk within stack
Stack<Integer> s1 = new Stack<>();
s1.push(x);
s1.push(y);
s1.push(g);
stack.push(s1);
System.out.println("before function calling"+stack);
int [] b=fun1(x,y,g,cost);//Here is error
System.out.println(x);//But x doesn't hold this value it is zero
System.out.println(Arrays.toString(b));//print the value that return by a[]
s1.push(x);
s1.push(y);
s1.push(g);
System.out.println("After function calling"+stack);
}
public static int[] fun1(int d, int b, int c,int f) {
int [] a=new int[3];
for (int i = 0; i < 1; i++) {
int x2=1,y2=1,g2=1;
d = x2 + f;
b = y2 + f;
c = g2 + f;
a[0]=d;
a[1]=b;
a[2]=c;
}//want to push the updated value into the stack s1.
return (a);
}
}
Stack可以提供类似[[0,0,0][2,2,2]]
的输出,但不是。此外,每当s1值更新时,它将像个人一样推送主堆栈。表示我的for循环第二次运行,值为[3,3,3]。它保留在[[0,0,0],[2,2,2][3,3,3]]
之类的主堆栈中。但所有这些都合并为[0,0,0,2,2,2,3,3,3]
。
没有产生所需的输出,也找不到错误。
答案 0 :(得分:0)
你的问题不明确。您的代码目前只是将x,y,g添加到堆栈两次,因此输出为[0,0,0,0,0,0]。您永远不会使用函数f返回的新值。如果将函数f返回的值推送到新堆栈然后将该堆栈添加到名为“stack”的堆栈中,那么您将获得所需的输出[[0,0,0] [2,2,2]] 。 如果我理解的话,请评论。