我知道如何使用字符串args从命令行获取输入,并且它在input = args[0]
处理正常,我的输入为java.exe program s1.in
但是我需要在终端中运行一个比较程序。所以我的输入必须有“<”符号。但是,我无法使用input = args[1]
获取输入值。当我输入时,args.length变为0.为什么会发生这种情况?
顺便说一句,有谁知道如何在谷歌中最好地搜索这种术语? Itthink谷歌不承认“<”在搜索条目中。
谢谢
答案 0 :(得分:2)
这是因为当您使用xyzzy <inputfile
时,您的shell运行xyzzy
并将该文件“连接”到您的标准输入。然后,它希望您读取该标准输入以获取您的数据 - 您永远不会看到该参数,因为它已从命令行中删除(或者,更有可能,从未添加到您的参数列表中)。
这就是为什么许多程序会在给定文件时处理文件,否则他们会从标准输入中读取数据。而这正是你在这里需要做的。
为此,您可能需要以下内容:
import java.io.*;
class Test {
public static void main(String args[]) {
InputStreamReader inp = null;
Boolean isStdIn = false;
try {
if (args.length > 0) {
inp = new InputStreamReader(new FileInputStream(args[0]));
} else {
inp = new InputStreamReader(System.in);
isStdIn = true;
}
// Now process inp.
if (isStdIn)
inp.close();
} catch (Exception e) {
System.exit(1);
}
}
}
选择文件(如果可用)或标准输入流进行读取。
答案 1 :(得分:0)
通常,最简单的方法是使用扫描仪:
Scanner scaner = new Scanner (System.in);