用java实现有编号为0-9的10位候选人以及不定数量的选民。选民每次输入一个得票的候选人名字,就记录该候选人得一票。投票结束后,统计每一个候选人出现的次数,输入-1表示结束。
时间: 2024-05-16 09:12:52 浏览: 44
好的,我可以帮你实现这个程序。首先,我们需要定义一个候选人类 `Candidate`,其中包含候选人的编号和得票数属性,代码如下:
```java
public class Candidate {
private int id; // 候选人编号
private int votes; // 候选人得票数
public Candidate(int id) {
this.id = id;
this.votes = 0;
}
public int getId() {
return id;
}
public int getVotes() {
return votes;
}
public void addVote() {
this.votes++;
}
}
```
接下来,我们可以定义一个投票系统类 `VotingSystem`,其中包含候选人数组和投票方法,代码如下:
```java
import java.util.Scanner;
public class VotingSystem {
private Candidate[] candidates; // 候选人数组
public VotingSystem() {
this.candidates = new Candidate[10];
for (int i = 0; i < 10; i++) {
this.candidates[i] = new Candidate(i);
}
}
public void vote() {
Scanner input = new Scanner(System.in);
String name;
boolean valid;
System.out.println("请输入候选人编号进行投票(0-9),输入-1结束投票:");
while (true) {
valid = false;
// 循环读入,直到输入正确的候选人编号
while (!valid) {
name = input.nextLine();
if (name.equals("-1")) {
return;
}
try {
int id = Integer.parseInt(name);
if (id >= 0 && id <= 9) {
candidates[id].addVote(); // 给该候选人加一票
valid = true;
} else {
System.out.println("请输入正确的候选人编号(0-9):");
}
} catch (NumberFormatException e) {
System.out.println("请输入正确的候选人编号(0-9):");
}
}
System.out.println("投票成功,请继续输入候选人编号进行投票,输入-1结束投票:");
}
}
public void printResult() {
System.out.println("投票结果如下:");
for (int i = 0; i < 10; i++) {
System.out.printf("候选人%d:得票数%d\n", i, candidates[i].getVotes());
}
}
}
```
最后,我们可以在 `main` 方法中创建一个投票系统对象,并调用其投票和输出结果方法,代码如下:
```java
public class Main {
public static void main(String[] args) {
VotingSystem vs = new VotingSystem();
vs.vote();
vs.printResult();
}
}
```
这样,我们就完成了这个程序的实现。
阅读全文