CharStack类与javac一起工作,但在Eclipse控制台中不返回任何内容
我试图在Eclipse中修改CharStack类(如下所示),但在运行它时,我无法让它在控制台中执行任何操作,尽管它在使用javac.exe编译时工作正常 这可能与运输返回有关吗?我如何向Eclipse发出信号,表示我已经准备好接受输入并返回结果(代码1) 该类的算法如下所示:CharStack类与javac一起工作,但在Eclipse控制台中不返回任何内容,java,eclipse,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
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
您要查找的是EOF字符,在这个Java类中以不可知操作系统的方式表示
在Windows中,将是
Ctrl-Z
。当您使用Windows CLI版本时,这可能是隐式的,但在Eclipse中并非如此。当我运行它时,我无法让它在控制台中执行任何操作。您希望它执行什么操作?你以为会发生什么?你为什么会这么想?它实际上做什么?如何将-1传递给System.in.read()?通过输入Ctrl+C?@Iyen我不知道;这是伯克利的一位教授写的,不是我。Ctrl+C在Eclipse控制台中不起作用。按enter键可使用Windows CLI。@SotiriosDelimanolis我希望它会返回一些内容。它不会返回任何东西。具体细节有些无关紧要,但我会更新帖子。CTRL-D
在linux下,另请参见