2015-03-15 2 views
0
if (vote1 == 1) { 
    result[0] = result[0] + 1; 
    i.println(pres1 + " " + result[0]); 
} 

Оператор my if составляет до 4 (например: else if (vote1==2...3...4)). каждый раз, когда я выбираю несколько кандидатов, результат будет ошибочным, и иногда выход изменится. я хочу, чтобы каждый раз, когда я выбираю кандидата 1, его голоса будут увеличиваться, а также когда я выбираю других кандидатов без каких-либо изменений в выходе.система голосования с приращением голосов

например:

candidate 1 = 8 (and increment) 
candidate 2 = 3 (and increment) 
candidate 3 = 5 (and increment) 
candidate 4 = 6 (and increment) 

пожалуйста, может кто-то поможет мне действительно это нужно для моего проекта

+1

использовать переключатель или еще –

+0

звучит как домашнее задание:/ – stinepike

+1

@StinePike [Итак, в чем проблема в выполнении домашних заданий вопросы?] (Http://meta.stackexchange.com/q/10811/161469) – amit

ответ

3

Если вам необходимо увеличивать для нескольких кандидатов, вам нужно какое-то цикл обновления голосования каждого кандидата:

int nbCandidates = 4; 
int[] result = new int[nbCandidates]; 

// assuming you want to increment candidate 1, 3 and 4 
// contained in an array 
int[] candidatesToUpvote = {1,3,4}; 
for (int c : candidatesToUpvote) { 
    result[c-1] += 1; 
} 

Здесь я предполагаю, что кандидат идентифицируется номером между [ 1,4]. Поскольку индексы массива начинаются с 0 в Java, вам необходимо перевести с id на индекс с (id - 1).

Существуют более надежные решения с HashMap<Integer, Integer>, где ключ является идентификатором кандидата, и значение будет значением для голосования.

+0

эй! Я попробовал ваше предложение, и это действительно сработало! Большое вам спасибо за это! но теперь моя проблема заключается в том, что вывод. Я храню его в текстовом файле, и вывод выглядит следующим образом: кандидат1 1 (<количество голосов) кандидат1 2 кандидат2 1 кандидат2 2 Можете ли вы дать мне решение, что единственное, что изменится, это количество голосов, а имена кандидатов останутся неизменными и не будут добавлены новые имена и новые голоса? это будет отличная помощь, спасибо вам снова! – bruh

+0

Если в вашем приложении нет параллелизма, вы можете загрузить полный файл перед вычислением, а затем записать полные данные _without_ appending. Но если вы хотите пойти дальше, вам, безусловно, нужна база данных, например 'mysql'. Это сложнее, но сила, гибкость и надежность намного больше, чем управление простыми файлами. –

0

Если ваш голос является значение из 1,2,3,4 - вы можете просто использовать следующее для каждого голоса:

result[vote-1]++; 

идея использовать тот факт, что голосование является значением в правильном диапазоне (проверить его первым!), а затем использовать это значение как смещение вашего массива и приращение соответствующей записи ,