所以我正在计算输入文件中的投票,sample.txt:
3
Homer REP
Moe IND
Barney DEM
0 1 0 2 2 0
我的代码如下所示:
public static void main(String[] args) {
int numCans = StdIn.readInt();//Number of candidates
String[] cans = new String[numCans];//Array containing the candidates
String[] parts = new String[numCans];//Array that contains the parties.
int[] votes = new int[numCans];
int voteCount = 0;
for (int i = 0; i < numCans; i++){
cans[i] = StdIn.readString();
parts[i] = StdIn.readString();
}
while (!StdIn.isEmpty()){//for counting votes
for(int i = 0; i < votes.length; i++){
if(StdIn.readInt() == i){
votes[i]++;
StdOut.println(i);
}
}
voteCount++;
}
}
所以最终发生的事情是大约2票。谢谢你的帮助!
答案 0 :(得分:1)
readInt()
将在每次调用的输入中读取一个新的整数。所以这就是你的循环所做的事情:
if(StdIn.readInt() == i){
votes[i]++;
StdOut.println(i);
}
首先,i
为0.程序读取整数并查看它是否为0。
假设整数不是0.现在你的for
循环回来了,并用i
= 1再次执行这个语句。你的if语句现在从另一个整数读取输入。它没有使用之前读过的相同整数。你告诉它读一个整数,所以它读一个。
我认为你可以看到这不是你想做的事。您的readInt()
必须在for
循环之外。我认为,一旦你做出这个改变,你就会发现你根本不需要for
循环。