我有这种方法,如果没有参数,则使用标准文件,否则使用参数中的一个。
(32,5,1999) becomes (TRUE && FALSE && FALSE) = FALSE
(5,6,900) becomes (FALSE && FALSE && TRUE) = FALSE
但是,if(day<1||day>31 || month<1||month>12 || year<1000||year>9999){
...
}
超出范围错误。我知道为什么,因为它在public class MainAnimal {
public static void main(String[] args) {
Parser parse = new Parser();
if ((args == null) || (args.length == 0)) {
File file = parse.getFile("findAnAnimal.csv");
} else {
System.out.println(args[0]);
}
List<String[]> animalList = parse.readFileAndParse(Paths.get(String.valueOf(file)));
块中是本地的。但是,有什么解决方法呢?
答案 0 :(得分:1)
解决此问题的最简单方法是更改此代码段:
if ((args == null) || (args.length == 0)) {
File file = parse.getFile("findAnAnimal.csv");
} else {
System.out.println(args[0]);
}
进入:
File file = null;
if ((args == null) || (args.length == 0)) {
file = parse.getFile("findAnAnimal.csv");
} else {
System.out.println(args[0]);
}
请记住您的最后一行:
List<String[]> animalList = parse.readFileAndParse(Paths.get(String.valueOf(file)));
假定该文件不为空。您应该事先检查文件是否为空,或者在获取文件后立即将if ... else块放入现有文件中。
答案 1 :(得分:0)
只需在if / else块下面声明文件。在if块上方设置一个默认为'findAnAnimal.csv'的“文件名”变量,如果存在参数则将其覆盖。这样会更健壮。
public class MainAnimal {
public static void main(String[] args) {
Parser parse = new Parser();
String filename = "findAnAnimal.csv"
if ((args == null) || (args.length == 0)) {
// do nothing
} else {
filename = args[0];
}
System.out.println("reading " + filename);
File file = parse.getFile(filename);
List<String[]> animalList = parse.readFileAndParse(Paths.get(String.valueOf(file)));