我会在底部列出我的代码,但这是交易。 我有一个带有进程方法的解析器类。此方法从网页中删除数据。我想获取scrape的每一行,将字符串拆分为一个数组并将值添加到一个对象,然后将该对象添加到ArrayList。当循环迭代时,来自每个scrape行的新值通过该对象添加到ArrayList。此代码中的相关方法是public ArrayList process()
我收到以下编译错误:
构造函数Flight(String)未定义 令牌“[”上的语法错误,此令牌后面的表达式
ArrayList类型中的方法add(String)不适用于参数(Flight)
我在这里做错了什么,以及如何修复它?
public class HtmlParser {
public String url;
public String airline;
public static String lastFlight;
static ArrayList<String> capture = new ArrayList<String>();
public HtmlParser(Properties config) throws IOException{
url = config.getProperty("url");
airline = config.getProperty("airline");
print("Fetching.........%s" , url);
}
public ArrayList<String> process() throws IOException{
Document doc = Jsoup.connect(url).get();
Elements tableRow = doc.getElementsByTag("tr");
for(Element tr : tableRow){
if(tr.text().contains(airline)){
String delims = "[ ]+";
String singleRowArray[] = tr.text().split(delims);
Flight f = new Flight(singleRowArray[]);
capture.add(f);
}
}
return capture;
}
这是我的航班。
public class Flight {
public Flight(String singleRowArray[]) {
String origin = singleRowArray[0];
String airline1 = singleRowArray[1];
String airline2 = singleRowArray[2];
String flightNo = singleRowArray[3];
String date = singleRowArray[4];
String ArrTime = singleRowArray[5];
String status = singleRowArray[6];
}
}
答案 0 :(得分:0)
static ArrayList<String> capture = new ArrayList<String>();
您无法在捕获列表中添加Flight类对象,该列表只能包含String类型中的元素。
Flight f = new Flight(singleRowArray[]);
capture.add(f); // Issue
-----------------^
答案 1 :(得分:0)
“构造函数Flight(String)未定义令牌上的语法错误”[“,此符号后面的表达式”
尝试将括号切换为类型,而不是变量:String[] singleRowArray
“ArrayList类型中的方法add(String)不适用于参数(Flight)”
您想要输入List<String>
类型的对象Flight
,因此您应该将列表类型更改为List<Flight>
。