gpt4 book ai didi

java - Java 中的 Ubuntu : Redirection from a . txt 文件

转载 作者:行者123 更新时间:2023-12-01 19:13:53 25 4
gpt4 key购买 nike

这应该非常简单,但由于某种原因,我无法让该程序从 .txt 文件获取参数并将其输出。这是我的代码:

public class Lab2 {

static Scanner input = new Scanner(System.in);

public static void main(String[] args)
{
Lab2_CLA.Lab2_CLA(args);
}
}

public class Lab2_CLA {

public static void Lab2_CLA(String[] data)
{
System.out.printf("%s, %s: %s%n", data[1], data[0], data[2]);
}
}

我编译了代码,如果我通过终端给它参数,它就可以工作。例如:

输入“java lab2/Lab2 John Doe 12345678

打印出:“Doe, John: 12345678

但是,如何通过在终端中输入以下内容来让它从 .txt 文件读取数据:“java lab2/Lab2 < input.txt”?每当我这样做时,我都会收到以下错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at lab2.Lab2_CLA.Lab2_CLA(Lab2_CLA.java:12)
at lab2.Lab2.main(Lab2.java:34)

最佳答案

输入重定向将文件发送到程序的 stdin(标准输入文件),而不是其命令行参数。在类 Unix 系统上,您可以使用反引号运算符获得所需的效果:

java lab2/Lab2 `cat input.txt`

简而言之,执行反引号之间的文本,并将执行结果插入到其位置。

编辑(回应OP的编辑):

您会遇到越界异常,因为通过重定向,程序不会获取任何命令行参数,但会硬寻址 args 数组的元素 0、1 和 2。

如果由于某种原因,基于反引号的解决方案对您来说不可行,唯一的选择是修改您的程序以读取其标准输入(此处显示的技术 Java file input as command line argument ),或接受文件名作为参数,然后读取该文件文件。

关于java - Java 中的 Ubuntu : Redirection from a . txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7508381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com