Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与用于行为的堆栈_Java_Stack - Fatal编程技术网

Java 与用于行为的堆栈

Java 与用于行为的堆栈,java,stack,Java,Stack,结果是432,我不知道为什么。for如何处理堆栈/队列/列表?我不想为这段代码寻找更好的选择(因为我已经知道了),我只是想知道这段代码是如何工作的 class Stack_1 { public static void main(String [] args) { Stack s = new Stack(); List l= new LinkedList(); for(int i = 0; i < 5; i++)

结果是432,我不知道为什么。for如何处理堆栈/队列/列表?我不想为这段代码寻找更好的选择(因为我已经知道了),我只是想知道这段代码是如何工作的

class Stack_1 {
        public static void main(String [] args) {
          Stack s = new Stack();
          List l= new LinkedList();
          for(int i = 0; i < 5; i++)
            s.add(i);
          for(int i = 0; i < l.size(); i++)
            s.push(l.remove(i));//this does nothing
          for(int i = 0; i < s.size(); i++)
            System.out.print(" "+ s.pop() );
       }
      }
类堆栈\u 1{
公共静态void main(字符串[]args){
堆栈s=新堆栈();
列表l=新的LinkedList();
对于(int i=0;i<5;i++)
s、 加(i);
对于(int i=0;i
如果您对最后一个循环感兴趣,它会重复5次,因为您要从0到堆栈的大小(如果您对此感到疑惑,第一个循环就是填充它的循环)。在每次迭代中,在堆栈上调用
pop
,这将删除并返回顶部的元素。因此,在循环之前,堆栈是第一次迭代之后的
[4,3,2,1,0]
,然后是
[2,1,0]
,依此类推。在每次迭代中,您还打印删除的顶部值,这就是您在控制台上看到它的原因。循环终止后,堆栈将为空。希望有帮助。

如果您对最后一个循环感兴趣,它会重复5次,因为您要从0到堆栈的大小(如果您对此感到疑惑,第一个循环就是填充它的循环)。在每次迭代中,在堆栈上调用
pop
,这将删除并返回顶部的元素。因此,在循环之前,堆栈是第一次迭代之后的
[4,3,2,1,0]
,然后是
[2,1,0]
,依此类推。在每次迭代中,您还打印删除的顶部值,这就是您在控制台上看到它的原因。循环终止后,堆栈将为空。希望有帮助。

这是一个有趣的观察结果。如果希望代码正确运行,请尝试以下操作:

    Stack s = new Stack();
    List l= new LinkedList();
    for(int i = 0; i < 5; i++)
      s.add(i);
    for(int i = 0; i < l.size(); i++)
      s.push(l.remove(i));//this does nothing
    int stackSize = s.size();
    for(int i = 0; i < stackSize; i++)
      System.out.print(" "+ s.pop() );
Stack s=新堆栈();
列表l=新的LinkedList();
对于(int i=0;i<5;i++)
s、 加(i);
对于(int i=0;i

您希望最后一个循环运行的次数与堆栈中的元素相同;但是,通过使用pop(),堆栈大小不断变化。希望这有帮助。

这是一个有趣的观察结果。如果希望代码正确运行,请尝试以下操作:

    Stack s = new Stack();
    List l= new LinkedList();
    for(int i = 0; i < 5; i++)
      s.add(i);
    for(int i = 0; i < l.size(); i++)
      s.push(l.remove(i));//this does nothing
    int stackSize = s.size();
    for(int i = 0; i < stackSize; i++)
      System.out.print(" "+ s.pop() );
Stack s=新堆栈();
列表l=新的LinkedList();
对于(int i=0;i<5;i++)
s、 加(i);
对于(int i=0;i

您希望最后一个循环运行的次数与堆栈中的元素相同;但是,通过使用pop(),堆栈大小不断变化。希望这有帮助。

for
独立于数据结构运行。
列表中没有任何内容(它的大小为
0
,因此
i
永远不会为真),因此第二个循环不会执行任何操作。你想做什么?这只是一个练习,你想得到它的输出(我没有编写代码),也就是(4 3 2),我不知道,因为第二个循环什么都不做,为什么输出不是4 3 2 1 0。
for
独立于数据结构运行。
列表中没有任何内容(它的大小为
0
,因此
i
永远不会为真),因此第二个循环不会执行任何操作。你想做什么?这只是一个练习,你想得到它的输出(我没有编写代码),也就是(4 3 2),我不知道,因为第二个循环什么都不做,为什么输出不是4 3 2 1 0。我解决了它,每次循环弹出一个数字,堆栈就会变小,所以当i=2时,2被打印出来,因此堆栈是[1,0]因此,当i=3时,它已经大于堆栈,因此循环停止。谢谢你的回答。我解决了它,每次循环弹出一个数字,堆栈就会变小,所以当I=2时,2被打印出来,因此堆栈是[1,0],所以当I=3时,它已经大于堆栈,所以循环停止。谢谢你的回答。