Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CharStack类与javac一起工作,但在Eclipse控制台中不返回任何内容_Java_Eclipse - Fatal编程技术网

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

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

我试图在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

您要查找的是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下,另请参见