投票计数理货

时间:2014-10-30 02:16:42

标签: java

我遇到了创建一个java程序的问题,该程序记录了每个候选人的投票。我们应该使用数组;然而,我们只是教他们,我不太关注如何解决这个问题。

我们应该读取的文件是:

4 7

2 10

3 2

3 4

4 5

5 6

7 9

0 12

1 2

3 45

6 9

55 19

-4 11

4 4

3 -21

左栏是候选人编号,右边是投票数。

第一列只能是1-10的整数。第二个可以是任何正值。 最后,该计划应该将每个候选人的总票数加在一起。

我认为我们需要一个类似的数组:int[] cands = new int[10]它指定候选数字。但是,我不明白如何组织这些值。对不起,如果这似乎混乱..我不知道如何解释这一点,因为我有点困惑。我需要的不仅仅是一个阵列吗?

以下是方向的摘要:

  

此文件中的每一行包含两个数字:第一个是候选标识符(1-10),第二个是候选人收到的投票数。您的程序将使用数组计算每个候选人的投票数,其中每个数组条目代表一个候选人。请注意,每个数组条目都充当该候选者的投票累加器。

编辑:这是我到目前为止所拥有的......

public static void main(String[] args) throws IOException {

File file = new File("Tally.txt");
Scanner input = new Scanner(file);
int[] cands = new int[10];
int cnt = 0;

while (input.hasNextLine()) {
    int cand = input.nextInt() - 1;
    int vote = input.nextInt();

    if ((cand >= 0 && cand < cands.length) && vote > 0) {
    cands[cand] += vote;
    }
}

System.out.println("Canidate:  \t  Votes:");
for (int index = 1; index < cands.length + 1; index++) {
    if (cnt < cands.length) {
    System.out.println("\t " + index + "\t\t" + cands[cnt]);
    cnt++;
    }
}
input.close();
}

}

但是,一旦它在文件中达到负值或大于10的值,它就会抛出各种错误(例如java.util.NoSuchElementException)。我怎么能避免这个?

1 个答案:

答案 0 :(得分:0)

您使用刚刚添加的代码完成了出色的工作!只剩下两件事需要解决。

首先,您的int[] cands长度为9,但您有10名候选人。如果你有new int[9]那么它的索引从0到8,因为它有9并且它们从0开始。你应该考虑当你遇到候选人10时会发生什么。

其次,这是您对文件的描述:

  

第一列只能是1-10的整数。第二个可以是任何正值。最后,该计划应该将每位候选人的总票数加在一起。

从中可以清楚地看出,不应该遇到任何负数,或者任何大于10的候选数字!但是你提供的文件在最后四行中出现了严重错误:候选人数为55,其中一人为-4,投票数为-21。所以要么文件与问题的描述不匹配(在这种情况下你需要回去投诉),或者你还没有告诉我们你的问题。应该使用与规格不匹配的线条。 (但实际上你的代码看起来好像忽略了不匹配的行。)