我在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名球员被识别,所以插入另一名球员为空值。
如果是这样,我们将非常感谢任何有关如何实现这一点的提示。
感谢。
答案 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;
}