我试图在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
答案 0 :(得分:1)
您正在寻找的是EOF字符,在此Java类中代表操作系统。
在Windows中Ctrl-Z
。当您使用Windows CLI版本时,这可能是隐含的,但在Eclipse中却不是这样。