这是我的第一篇文章,所以请让我知道,如果一些东西应该是不同的。
我一直在尝试创建一个方法,在二维数组列表中查找搜索项的索引。这是我想到的代码:
import java.util.List;
public class Searcher {
public static int Search(List<List<String>> csv, String term) throws TermNotFoundException{
if (csv.get(0).contains(term)) {
return csv.get(0).indexOf(term);
}
else {
throw new TermNotFoundException("Term not found");
}
}
我现在遇到的问题是,当我硬编码出现在我正在查看的arraylist中的搜索项时,它工作得非常好。当我尝试使用如上所示的term变量时,问题就出现了。
我正在查看的特定arraylist(csv.get(0))如下所示:
[日期时间\u utc,e1a,e1b,e1c,e2a,e2b,e3a,e3b,e3c,e3d,e4a,g1a,g2a,g2c,zon]
因此,如果我在“e1a”中硬编码,它将找到它并返回1。如果我在main方法中调用函数并为变量项填充相同的内容,这就行不通了。
有什么我不知道的吗?
编辑:为了详细说明,我不能透露完整的二维数组由于隐私的原因。不过,我可以给你更多的信息。
有些人建议不要搜索两次,因此我将代码更改如下:
import java.util.List;
public class Searcher {
public static int Search(List<List<String>> csv, String term) throws TermNotFoundException{
System.out.println(csv.get(0));
System.out.println(term);
int result = csv.get(0).indexOf(term);
if (result != -1){
return result;
}
else {
throw new TermNotFoundException("Term not found");
}
}
同样的问题也会出现。包括一些调试行,输出如下:
[datetime_UTC, E1A, E1B, E1C, E2A, E2B, E3A, E3B, E3C, E3D, E4A, G1A, G2A, G2C, Zon]
E1A
TermNotFoundException: Term not found
at Searcher.Search(Searcher.java:12)
at Main.main(Main.java:10)
如果有帮助的话。这就是我调用函数的地方:
import java.io.FileNotFoundException;
import java.util.List;
public class Main {
public static void main(String[] args) throws FileNotFoundException {
List<List<String>> csv = CSVReader.Read("standard_profiles.csv");
try {
System.out.println(Searcher.Search(csv, "E1A"));
} catch (TermNotFoundException e) {
e.printStackTrace();
}
}
1条答案
按热度按时间chhkpiq41#
上面的代码返回0,我无法重现您的问题。然而,如果你的任期不在第一个名单上,它将不起作用
.get(0)
意味着你只搜索第一个List
在你的List<List>