将文本文件作为标准输入提供

时间:2017-03-31 08:01:38

标签: java linux java.util.scanner

我正在尝试编写程序来调用Triangle.java。程序应该从文件读取3个整数作为标准输入并将它们用作参数。

我做了类似的事情:

Scanner input = new Scanner(System.in);
while(input.hasNextLine()) {
  String TestName = input.nextLine();
  int x = input.nextInt();
  int y = input.nextInt();
  int z = input.nextInt();
  .......
}

然后我想使用xyz作为参数。我尝试使用命令行javac Triangle.java<test.txt在我的ubuntu机器上编译程序,然后使用java Triangle.class运行程序。

事情似乎没有奏效。任何建议都将受到高度赞赏。

1 个答案:

答案 0 :(得分:2)

好吧,这段代码存在一些问题,但这是你的主要问题:你阅读的内容比你有的多

String TestName=input.nextLine();
int x =input.nextInt();
int y =input.nextInt();
int z =input.nextInt();

input.nextLine()已经阅读了整个行。所以input.nextInt()会尝试从下一行读取整数,你甚至不知道它是否存在。

System.in这不是问题,因为它只会提示用户输入更多的内容(尽管我不知道TestName变量将如何用于任何用途)。但是如果你使用的是文件,这将成为一个问题。

另外,作为旁注:

您无法使用input.hasNextLine()Scanner上真正呼叫System.in,因为在该时间点,输入流中不会有下一行。您首先必须提示用户在有一行之前输入更多内容,这意味着您的while永远不会被执行。

然而,当你使用文件时,显然检查会有效,所以你应该保留它。