Java数组索引大小冲突

时间:2014-01-02 01:53:20

标签: java html xml arrays yahoo

我在google代码上找到了一个java应用程序,我已经下载了它并且工作得很好,但是我找到了一个它打破的实例。我是Java的新手,我正在努力调和它,但我很快就发现自己脱离了联盟。 以下是Google项目的链接https://code.google.com/p/yahoo-fan-football-stats/

该应用程序允许您下载幻想足球联赛中每支球队的球员统计数据。从我收集到的应用程序中擦除了yahoo html,构建了一个统计数据,然后将整个联盟的数据输出到csv文件。

该应用程序的一部分可以提升玩家的表现,包括他们的幻想点,投射点数和玩家开始的百分比。这可以在这里代码的第158行https://code.google.com/p/yahoo-fan-football-stats/source/browse/trunk/src/fantfootball/stats/YahooPlayerStatsDownloader.java中看到。它通过在yahoo html中查找“pps has-stat-note”来实现这一点并拉出值。它将所有团队中的所有统计数据转换为数组。

问题是,当一个团队中的玩家处于一个再见周时,html中不存在“pps has-stat-note”剂量。这会导致阵列大小因团队而异,从而导致应用程序失败。

private void getPerformance(Document doc, List<PlayerStat> stats) {
    List<Node> players = getNodesFromClass(doc, "pps has-stat-note","a");
    for (int i = 0; i < stats.size(); i++) {
        Node player = players.get(i);
        String points = player.getTextContent();
        String projected = player.getParentNode().getParentNode().getNextSibling().getTextContent();
        String percentage = player.getParentNode().getParentNode().getNextSibling().getNextSibling().getTextContent();

        double converted = Double.parseDouble(percentage.replace("%", ""))/100;

        PlayerStat stat = stats.get(i);
        stat.setPoints(Double.parseDouble(points));
        stat.setProjectedPoints(Double.parseDouble(projected));
        stat.setPerctStart(converted);
       // LOGGER.debug(stat);
    }
}


private List<Node> getNodesFromClass(Document doc, String className, String nodeType) {
    try{
    List<Node> values = new ArrayList<Node>();
    XPath xpath = XPathFactory.newInstance().newXPath();
    String path = "//"+ nodeType + "[contains(@class,'"+className+ "')]";
    NodeList nl = (NodeList) xpath.evaluate(path, doc, XPathConstants.NODESET);

    if(nl == null || nl.getLength() < 1){
        LOGGER.warn("FOUND ZERO NODES FOR " + className);
        return values;
    }

    for (int i = 0; i<nl.getLength(); i++){
        Node n = nl.item(i);
        values.add(n);
    }

    return values;

    }catch(Exception e){
        throw new IllegalStateException(e);
    }

}

}

如果一个团队的数组与之前的数组大小不同,或者我指定数组的大小,是否有办法将空值插入数组?即。每支球队有15名球员,如果一名球员在一个再见周,那么只有14名球员被识别,所以插入另一名球员为空值。

如果是这样,我们将非常感谢任何有关如何实现这一点的提示。

感谢。

1 个答案:

答案 0 :(得分:0)

// Um sure but this is just a quik guess by me,

var arr1 = ["P", "P", "P", "P", "P", "P", "P" ]

var arr2 = ["P", "P", "P", "P" ]

fillArr(arr1, arr2);

  function fillArr(i, j){
  if(i.length == j.length) return;
  var b = i.length < j.length ? j : i;
  var s = i.length < j.length ? i : j;

  var l = b.length - s.length;
  var o = s.length;


  for(var k = 0;k < l;++k) s[o + k] = null;

}