2014-12-16 7 views
0

Я пытаюсь подсчитать оценки, которые находятся в текстовом файле. В этом текстовом файле некоторые из оценок заменены на x, и это аномалии. Я пробовал разные вещи, чтобы попытаться получить это право, но общее количество очков всегда 0! Если кто-то может указать мне в правильном направлении, это было бы здорово! Спасибо :)Подсчет баллов из текстового файла - Java

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 
+1

Каковы оценки, изложенные в файле? – Academiphile

+0

Не могли бы вы предоставить входной файл? –

+0

Я получу скриншот. 1 секунда – Uyyyfgfar

ответ

0

В вашем состоянии, если вы только общую сумму строк, которые имеют «х» в положении 2 и положении 3. Это никогда не происходит в вашем входе образца

Я думаю, что вы хотите чтобы пропустить оценки, где один или другой балл равен x. Поэтому

, если (arrayStore [2] .trim(). IndexOf ("X") == -1 & & arrayStore [3] .trim(). IndexOf ("х") == -1)

{

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

}

Вы также можете получить дополнительную работу для всего.

+0

Несомненно, должно быть || а не && – sprinter

+0

Оператор parseInt вызывается при конкатенации двух полей. Это не сработает. – sprinter

+0

Спринтер был прав, если мое условие было неправильным. Я отредактировал ответ и протестировал его локально. Вопрос о том, как рассчитывается «итоговое», для меня неоднозначно. Кажется, наиболее вероятным решением является total = Integer.parseInt (arrayStore [2]) + Integer.parseInt (arrayStore [3]) – ProgrammersBlock

0

Несколько предложений для вас:

  1. printf заявление выглядит как он предназначен быть для отслеживания? Ознакомьтесь с классом Logger - вы обнаружите, что это будет намного полезнее в долгосрочной перспективе. В этом случае вы, вероятно, имеете в виду println, а не printf.
  2. Класс String имеет метод contains - это более интуитивное использование, чем indexOf.
  3. Возможно, вы захотите посмотреть на регулярное выражение или сканеры, а не на разделение. Regexp автоматически отфильтрует ваши аномалии «x», посмотрев строки, которые имеют номера в соответствующем месте, и может игнорировать пробелы в сильно отформатированных строках.
  4. Наконец, вы можете захотеть использовать Perl вместо Java для этого, если все файлы основаны на файлах. Это абсолютно тривиальная часть кода в Perl.
Смежные вопросы