从文本文件中计算得分 - Java

时间:2014-12-16 17:26:49

标签: java arrays while-loop count

我试图计算文本文件中的分数。在这个文本文件中,一些分数被替换为x'并且这些是异常。我尝试过不同的尝试,但是得分总是为0!如果有人能指出我正确的方向,这将是伟大的!谢谢:))

while (txtFileScan.hasNext()) {
    //Splits the array into lines and splits it, it then adds up what's in arrayStore[2] and [3].
    String ln = txtFileScan.nextLine();
    String[] arrayStore = ln.split(":");
    if (arrayStore.length == 4) {
        System.out.printf(arrayStore[0], arrayStore[2], arrayStore[1], arrayStore[3]);
        //If statements: if arrays are null, nested if to check if there are any x's.
        if (arrayStore[2] != null && arrayStore[3] != null) {
            if (arrayStore[2].trim().indexOf("x") >= 0 && arrayStore[3].trim().indexOf("x") >= 0) {
                total = Integer.parseInt(arrayStore[2] + arrayStore[3]);
            }
        }
    }
}

Leeds United : Liverpool : 1 : 2
Chelsea :  Manchester City : 1 : 1
Aston Villa : Middlesbrough : 3 : 1
Tottenham Hotspur : Stoke City : 0 : 0
West Ham United : Wigan Athletic :2 : 1
Fulham : Liverpool : 1 : 2
Wigan Athletic : Leeds United : 2 : 2
Arsenal Liverpool :2:2
Hull City: Tottenham Hotspur : 3 : 5
Everton : Portsmouth:4 : 2
Stoke City : West Bromwich Albion : 5 : 4
Leeds United : Liverpool : 1: 10
Blackburn Rovers : Fulham : 1 : 1
West Ham United : Newcastle United : 0 : 0
Manchester United : Wigan Athletic : 1 : 2
Hull City : Sunderland : 2 : 3
Chelsea : Manchester City :1
Fulham : Leeds United : 1 : 2
Wigan Athletic : Tottenham Hotspur : 2 : 2
Hull City : Everton : 3 : 5
: :2:0
Sunderland : Blackburn Rovers : 4 : 2
Stoke City : West Bromwich Albion : 5 : 4
Hull : Liverpool : 5: x
Blackburn Rovers : Fulham : 1 : 1
Chelsea  : Everton : a : 1
Sunderland : Newcastle United : 0 : 0
Hull : :2:3
Sunderland : Blackburn Rovers : 1 : 2
Hull City : Everton : 2 : 3
Leeds United : Chelsea : 1 : 2
Chelsea : Manchester City : 1 : 1
Aston Villa:Fulham:3:1
Manchester City : Stoke City : 0 : 0
West Ham United : Middlesbrough : 2 : 1

2 个答案:

答案 0 :(得分:0)

在你的if条件中,你只是总计有" x"位置2和位置3。 这种情况从未在您的示例输入中发生

我认为你想要的是跳过一个或另一个得分为x的分数。因此

if(arrayStore [2] .trim()。indexOf(" x")== -1&& arrayStore [3] .trim()。indexOf(" x&# 34;)== -1)

{

total = Integer.parseInt(arrayStore [2] + arrayStore [3]);

}

您可能还需要进一步的工作。

答案 1 :(得分:0)

为您提出一些建议:

  1. printf语句看起来像是要用于追踪?查看Logger课程 - 从长远来看,您会发现它更有用。在这种情况下,您可能意味着println而不是printf
  2. String课程采用contains方法 - 比indexOf更直观。
  3. 您可能希望查看正则表达式或扫描程序而不是拆分。 Regexp会自动过滤掉您的' x'通过查看在相关位置具有数字的行并且可以忽略格式错误的行中的空格来进行异常。
  4. 最后,如果它基于所有文件,您可能希望使用Perl而不是Java。这是Perl中完全无关紧要的代码。