在main方法的测试类中,参数设置为文件名(此文件包含整数数据)
以下是代码段:
static Main main = new Main();
static
{
String[] args = {"../data/filename.txt"};
main.main(args);
}
由于文件名作为参数传递给main方法,因此文件名的类型为String []。需要解析此文件(或任何其他可能的方法)以获取信息。为此,我使用扫描仪逐行查看。
public static void main( String[] args )
{
List<Integer> left = new ArrayList();
List<Integer> right = new ArrayList();
try {
Files.lines(Paths.get("filename.txt"))
.map(l -> l.split("\\s"))
.forEachOrdered(l -> {
left.add(Integer.parseInt(l[0]));
right.add(Integer.parseInt(l[1]));
});
} catch (NumberFormatException | IOException e) {
e.printStackTrace();
}
int[] leftArray = left.stream().mapToInt(Integer::intValue).toArray();
int[] rightArray = right.stream().mapToInt(Integer::intValue).toArray();
}
这里的问题是我已经将文件名硬编码到Files.lines(Paths.get(&#34; filename.txt&#34;))中,这是我不想要的。
由于文件名作为参数传递,并且类型为String [],因此我无法使用args作为文件扫描程序的参数。我的问题是,如何将String []转换为String?或者是否有更简单的方法来解析信息? (请记住,文件名将是main的参数)
答案 0 :(得分:0)
您是否在询问如何索引args
数组?就这样做:
Files.lines(args[0])
另外,在测试类中实例化Main
没有意义。只需静态调用该方法:
static
{
String[] args = {"../data/filename.txt"};
Main.main(args);
}
答案 1 :(得分:0)
你是否尝试过从String [](数组)中取出元素?
java中的参数应该是这样的:
Args [0] - 总是程序名称 Args [1,2 ..] - 参数
所以我认为您应该将第一个代码更改为:
static Main main = new Main();
static
{
String[] args = {"Main","../data/filename.txt"};
main.main(args);
}
和第二个代码
public static void main( String[] args )
{
List<Integer> left = new ArrayList();
List<Integer> right = new ArrayList();
try {
Files.lines(Paths.get(args[1]))
.map(l -> l.split("\\s"))
.forEachOrdered(l -> {
left.add(Integer.parseInt(l[0]));
right.add(Integer.parseInt(l[1]));
});
} catch (NumberFormatException | IOException e) {
e.printStackTrace();
}
int[] leftArray = left.stream().mapToInt(Integer::intValue).toArray();
int[] rightArray = right.stream().mapToInt(Integer::intValue).toArray();
}
这是一个很好的改变,所以当你采取&#34;真实&#34;参数。否则,它会获取程序名称。