Java 程序输出(堆栈)

标签 java stack push stdout stdin

这是我关于SO的第一个问题。 这可能是一个愚蠢的问题,但到目前为止我还没有弄清楚。

考虑下面的 Reader.java 程序:

   public class Reader {

      public static void main(String [ ] args) {

      Stack<String> stack = new Stack <String>();

         while (!StdIn.isEmpty ()) {

            stack.push(StdIn.readString());
         }

         while (!stack.isEmpty()) {

            StdOut.print(stack.pop() + " ");
         }
         StdOut.println();
     }
   }

然后给定一个文本文件(words.txt)具有以下内容:

read
cannot
I

鉴于该程序已使用文件 StdIn.java、StdOut.java 和 类(class)中使用的 Stack.java,以下命令行指令会产生什么输出?

java Reader < words.txt

解决方案表明输出应该是:

"I can read"

而不是

"I cannot read"

这是为什么?

谢谢:)

最佳答案

正确的输出是“我无法阅读”。这应该是那本书中的一个错字。

无论什么输入被插入堆栈,在弹出操作期间都会以相反的顺序出现(不是任何新单词)

关于Java 程序输出(堆栈),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19752488/

相关文章:

c - 传递给函数的指针不重新分配

c - 使用数组的堆栈实现

javascript - JS : Update an attribute of the latest added element after push() in a loop does not assign the correct value

java - 下载网站源代码。安卓

java - 在 Java 中将 Map<String, String[]> 转换为 Map<String, Object[]>

java - 在java中匹配 "."

linux - gdb - 如何找到堆栈框架的当前模块

ios - 通过heroku解析服务器在单个设备上发送推送通知

javascript - jQuery:在每个循环中将对象添加到数组不起作用

java - 将元素添加到 Canvas JavaFX