Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.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
使用命令行使用Java进行管道输入_Java_Input_Piping - Fatal编程技术网

使用命令行使用Java进行管道输入

使用命令行使用Java进行管道输入,java,input,piping,Java,Input,Piping,我可以通过键入“javareadinput

我可以通过键入“javareadinput当您键入
java ReadInput hello
时,您还没有(尚未)向
系统提供任何输入。在
中,程序执行会阻塞,直到有东西可读取为止。您可能注意到字符串
“hello”
被传递到
args
参数中,传递给
main()
方法

如果您正在使用调试器(我强烈建议),请在
main()
的第一行放置一个断点。您会注意到,当您以
java ReadInput hello
运行程序时,
args[0]
“hello”

如果不使用调试器,则可以使用
System.out.println()
(这是初学者经常调试代码的方式)。将这一行代码添加为
main()
的第一行:


程序命令行上给出的参数不会进入
系统。在
中,它们进入
args
数组。您可以使用类似于
echo hello | java ReadInput
的方法来运行程序,也可以修改程序以查看其
args
数组并将其视为输入。(如果您使用后一个选项,您可能希望返回到从
系统中读取。在
中,如果
args
中没有任何内容)

以上两个答案部分正确,但部分误导

使用以下语法

if (args.length > 0) System.out.println(args[0]);
在本例中,您将传入两个命令行参数。这些属性将通过
args
数组提供:

java ReadInput "Input number one" "Input number two"
使用您提供的代码,当readLine()调用的结果返回
null
时,程序将结束。我相信您可以在提示下按enter键发送一个空行,然后结束程序。如果没有,您可能必须修复程序以检查空字符串(input.readLine().equals(“”)


希望这有帮助。

使用终止标准输入

   public static void main(String[] args) throws IOException {
          System.out.println(args.length); //3
          System.out.println(args[0]); //"ReadInput"
          System.out.println(args[1]); //"Input number one"
          System.out.println(args[2]); //"Input number two"
   }

或者自己设置一个特殊的EOF符号。
?我明白你所说的“hello”实际上是args[0],但是如果我想测试我的代码而不必指定要读取的文件怎么办?@mephisto,请参阅我回答中使用
echo
将输入导入程序的示例。在*nix上,你可以使用Ctrl-D(终止stdin管道的EOF代码)终止输入。@fd:谢谢,我不知道。
java ReadInput "Input number one" "Input number two"
   public static void main(String[] args) throws IOException {
          System.out.println(args.length); //3
          System.out.println(args[0]); //"ReadInput"
          System.out.println(args[1]); //"Input number one"
          System.out.println(args[2]); //"Input number two"
   }
Ctrl-D  :  Linux/Unix 
Ctrl-Z (or F6) and "Enter" : Windows.