CharStack类与javac一起使用,但在Eclipse控制台中不返回任何内容

时间:2015-10-19 16:08:12

标签: java eclipse

我试图在Eclipse中修改CharStack类(下面),但是当我运行它时,我无法在控制台中执行任何操作,尽管使用javac编译它时工作正常。 exe文件

这或许与回车有关吗?我如何向Eclipse发出信号,表示我已准备好接受输入并返回结果(-1)?

该类的算法只是:

while (there is a character to read)     
    push the character onto a stack;

while (there are characters on the stack)     
    pop off a character and print it; 

堆栈的概念是成为一个类的完美候选者。它有一个明确定义的接口(push()pop())和一些强制执行的规则(你只能从顶部获取数据,你只能删除插入的元素)。这是一个包含字符的堆栈的简单实现:

import java.io.*;
public class CharStack
{
  private char[] m_data;          

  private int m_ptr;

  public CharStack(int size)
  {
      m_ptr = 0;                  

      m_data = new char[(size > 1 ? size : 10)]; 
  }

  public void push(char c)
  {
      if (m_ptr >= m_data.length) 
      {
         // Grow the array automatically
         char[] tmp = 
            new char[m_data.length * 2];

         System.arraycopy(m_data, 0, 
                          tmp, 0, 
                          m_data.length);
         m_data = tmp;
      }
      m_data[m_ptr++] = c;
  }

  public char pop()              
  {
      return m_data[--m_ptr];
  }
  public boolean hasMoreElements()
  {
      return (m_ptr != 0);
  }


  public static void main(String[] argv) 
      throws IOException
  {
      CharStack s = new CharStack(10);
      int i;
      while ( (i = System.in.read()) != -1 )
      {
         s.push((char) i);
      }
      while (s.hasMoreElements())
      {
         System.out.write(s.pop());
      }
      System.out.println();
    }
}

当我在Windows CLI中运行时,我得到:

C:\user>java CharStack
12345

54321

1 个答案:

答案 0 :(得分:1)

您正在寻找的是EOF字符,在此Java类中代表操作系统。

在Windows中Ctrl-Z。当您使用Windows CLI版本时,这可能是隐含的,但在Eclipse中却不是这样。