【问题标题】:Java Program Output (Stacks)Java 程序输出(堆栈)
【发布时间】:2013-11-03 11:35:30
【问题描述】:

这是我关于 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 和 课程中使用的stack.java,下面的命令行指令会产生什么输出?

java Reader < words.txt

解决方案说输出应该是:

"I can read"

而不是

"I cannot read"

这是为什么?

谢谢:)

【问题讨论】:

  • 教科书一定有错误,或者我们没有所有的细节。堆栈是 LIFO(后进先出),所以输出应该是“我无法阅读”
  • StdInStdOut 是什么?
  • StdIn 和 StdOut 只是用于文本输入/输出的普林斯顿库。
  • 你还没有发布SSCCE
  • 这实际上是以前试卷中的一道题,所以我没有剩下的代码。据我所知,pop 和 push 方法都不应该改变输出,使其产生“我可以阅读”。另外,我还是新手,所以我已经习惯了事情的运作方式:)

标签: java stack push stdout stdin


【解决方案1】:

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

任何被压入堆栈的输入,都会在弹出操作期间以相反的顺序出来(不是任何新词)

【讨论】:

  • 没错,我就是这么想的。我问了我的几个朋友,他们都同意答案不可能是“我可以阅读”。但是,这道题来自之前的试卷,上面写着“我不会阅读”得 1 分,“我会阅读”得 2 分。
  • @EfVonZee 有时标记方案可能会出错,您必须使用一些常识。鉴于此处提供的详细信息,输出不可能是“我可以阅读”。 :)
  • 谢谢 :) 我认为这是不可能的......只是很高兴我没有发疯。
猜你喜欢
  • 2023-03-15
  • 1970-01-01
  • 2010-12-11
  • 1970-01-01
  • 1970-01-01
  • 2016-03-12
  • 2011-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多