在Eclipse中如何获取标准输入流(STDIN)?

4

我需要编写一段使用STDIN和STDOUT的竞赛代码,如何设置eclipse以从STDIN获取输入?

当我只使用编辑器和命令行时,我运行的是:

java Hatch < hatch_input

现在我需要在Eclipse中直接使用相应功能。如果能够直接从文件中使用它,那就太完美了,但只要我能够编写代码并通过点击运行在Eclipse中直接使用STDIN,即使只是将实际输入粘贴到某个地方也足够了。

class Main{

       public static void main (String[] args) throws java.lang.Exception{
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    }

}

上面的代码是我想要实现的。

1
你的意思是在运行配置的参数选项卡中,可以直接输入:<hatch_input>(其中hatch_input是一个文件名)吗? - incises
4个回答

4

您也可以直接在输入数据或将其复制粘贴到 Eclipse 控制台窗口中。对于 Sdtin,当程序到达该点时,焦点会转移到控制台并等待响应。


你如何指定已经完成了stdin的输入?假设你有以下代码:while (!StdIn.isEmpty()) {...},你想在控制台上输入几个字符串,然后继续执行。但是在我的情况下,我可以在控制台上输入,但程序永远不会继续执行到下一行。 - capovawi
在控制台输入完毕后,只需按下回车键而不输入任何内容,然后 !StdIn.isEmpty() 将返回 false 并退出循环。之后您可以继续进行程序的其余部分。 - ChathuraG
1
Ctrl + D 的可靠性比检查空字符串更高(这假设您正在按行解析)。 - Jmoney38

4
当您运行程序时,您可以设置运行配置。只需单击播放按钮旁边的箭头,然后选择“运行配置...”。
在新的运行配置对话框中,创建一个新的Java应用程序运行配置。在“参数”选项卡中,您可以输入要传递给程序的参数。
建议:在最后一个选项卡“常规”中,选择将其保存为共享文件,这将创建一个*.launch文件,您可以使用它快速运行程序。您还可以为不同的输入创建不同的启动文件。

0

以下是我尝试过的代码。如果您在命令提示符中运行程序,则此代码可以正常工作,但在Eclipse中不起作用,因为控制台不再等待用户输入并给出了java.lang.NullPointerException

如果您要通过用户输入读取数据,则可以使用System.in.read()。这也适用于Eclipse控制台。

在此代码中,您可以从用户获取数据,但此数据不是我们在运行时抛出的args...

public class CONSOLE
{
    public static void main(String[] args)
    {   
        // TODO Auto-generated method stub
        Console c = System.console();

        System.out.println("Enter Username : \t");
        String u = c.readLine();

        System.out.println("Enter Password : \t");
        char[] p = c.readPassword();

        System.out.println("USERNAME : "+u);
        System.out.println("PASSWORD : "+String.valueOf(p));
    }
}

-4
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接