将数据传递给对象

时间:2014-02-24 19:03:58

标签: java arraylist parameter-passing

我会在底部列出我的代码,但这是交易。 我有一个带有进程方法的解析器类。此方法从网页中删除数据。我想获取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];

}

}

2 个答案:

答案 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>