Java 如何访问通过main(string[]args)传入的命令行选项列表中的最后一个字符串?
我正在构建一个Java应用程序,它接受不同数量的命令行选项作为输入,最后一项始终是文件名。当我在下面的第二行中指定参数索引时(例如,Java 如何访问通过main(string[]args)传入的命令行选项列表中的最后一个字符串?,java,arrays,command-line-interface,Java,Arrays,Command Line Interface,我正在构建一个Java应用程序,它接受不同数量的命令行选项作为输入,最后一项始终是文件名。当我在下面的第二行中指定参数索引时(例如,args[2]),当我提前知道索引时,一切当然都正常工作,但是我很难想出正确的语法来访问字符串[]中的最后一项当处理一个文件,甚至一个字符串作为输入时,与整数数组或其他更简单的方法相比,当索引号变化时 public static void main(String[] args) { String inFile = args.length-1; 尝试: 你
args[2]
),当我提前知道索引时,一切当然都正常工作,但是我很难想出正确的语法来访问字符串[]中的最后一项
当处理一个文件,甚至一个字符串作为输入时,与整数数组或其他更简单的方法相比,当索引号变化时
public static void main(String[] args) {
String inFile = args.length-1;
尝试:
你必须使用
String inFile = args[args.length-1];
//array name ^^^
//last index value ^^^^^^^^^^^^^^
如果您经常需要此功能,可以将其封装到方法中:
public static <T> T last(T[] them) {
return them != null && them.length > 0 ? them[them.length - 1] : null;
}
public void test(String[] args) throws Exception {
String fileName = last(args);
}
public static T last(T[]他们){
返回它们!=null&&theme.length>0?它们[theme.length-1]:null;
}
公共无效测试(字符串[]args)引发异常{
字符串文件名=最后一个(args);
}
假设args
不是空的:args[args.length-1]
。谢谢,这很有效。我意识到这是一个简单的问题,但我希望这能让其他人的搜索更容易,因为我无法找到它。我很高兴。请接受我的答案并投票。很好,但请注意空检查是死代码,因为String[]在main()方法中,args
不能为null。null
可以是数组中的一个元素,因此不应将其作为“错误”值返回。如果它们
为null
,最好抛出NullPointerException
,如果为空则抛出NoTouchElementException
。
public static <T> T last(T[] them) {
return them != null && them.length > 0 ? them[them.length - 1] : null;
}
public void test(String[] args) throws Exception {
String fileName = last(args);
}