我正在从一个文件(文件名作为命令行参数提供)中读取输入,该文件包含未知数量的整数。自定义的“ readInts”方法将读取整数并返回一个数组。我不知道从一开始就初始化数组的大小。
包含“ readInts”方法的类- https://algs4.cs.princeton.edu/code/edu/princeton/cs/algs4/In.java.html
int []whitelist;
if(args.length>0) {
whitelist = In.readInts(args[0]);
}
Arrays.sort(whitelist);
由于数组的大小在开始时是未知的,我该如何处理? 如果我先创建一个大小为'x'的数组,然后将readInts的输出分配给它,会不会有内存丢失?
答案 0 :(得分:3)
这是因为如果args.length==0
,白名单将不会初始化。在这种情况下,Arrays.sort(whitelist);
很可能会引发异常。如何防止这种情况取决于您要执行的操作,但是在没有args的情况下,您似乎根本根本不使用白名单:
if(args.length>0) {
int [] whitelist = In.readInts(args[0]);
Arrays.sort(whitelist);
}
或具有某种默认设置:
int []whitelist=new int[0];
if(args.length>0) {
whitelist = In.readInts(args[0]);
}
Arrays.sort(whitelist);