【问题标题】:How to run a program on standard input?如何在标准输入上运行程序?
【发布时间】:2018-09-07 14:24:48
【问题描述】:

我已经创建了一个 Sokoban-solver 的实现,代码目前看起来像这样(不打算发布所有代码):

public Sokoban() throws Exception{
myList = new ArrayList<Integer>();

file = new File("C:/Users/joaki/Desktop/sokoban/readin.txt");
sc = new Scanner(file);
sc.reset();
List<String> lines = new ArrayList<>();
while (sc.hasNextLine()) {
    line = sc.nextLine();

如您所见,我只是使用文件路径来使用扫描仪读取文件,但根据我的任务,它应该看起来像:

更具体地说,如果“map1.txt”是一个带有推箱子地图的文件 代理程序“代理”将在标准输入上发送 map1.txt。 在 unix/linux 下这对应于运行类似的程序

agent &lt; map1.txt

我真的不明白它们的意思,我应该从命令行参数还是从 cmd 运行程序?

【问题讨论】:

    标签: java java.util.scanner stdin


    【解决方案1】:

    程序应该从用户输入中读取文件,而不是读取文件 - 所以是的,您应该从命令行运行程序。这意味着您的程序应该从System.in 获取输入,而不是直接打开文件:

    sc = new Scanner(System.in);
    

    【讨论】:

    • 好的,但是你如何运行它,假设我的班级是推箱子,我的文件正在读取,那么它会是:命令行中的 java Sokoban readin.txt 吗?我是否必须将文本文件与我的项目放在同一个地图中?
    【解决方案2】:

    在创建Scanner 时使用:

    sc = new Scanner(System.in);
    

    它会告诉扫描仪从默认输入读取。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-23
      • 2019-12-18
      • 2017-11-22
      • 1970-01-01
      • 2021-03-03
      • 1970-01-01
      相关资源
      最近更新 更多