可能重复:
Array sorting input
实施一项计划,处理人才中5名候选人的投票 比赛。
程序应使用String数组来保存5的名称 候选人和一个整数数组来记录每个人的投票数 选手。
它应该提示用户输入候选人的号码 希望投票(在0 - 4范围内),直到输入-1,其中 表示投票结束。如果是,则应输出错误消息 所选候选人不在所要求的范围内。
在投票结束时,该计划应该对选票进行排序 降序并输出它们,然后输出显示的消息 谁在第3,第2和第1位
好吧,到目前为止,我遇到了一些失败。排序和交换输入时我不会有任何问题。但输入本身对我来说很痛苦。
//exam result processing - using selection sort
import java.util.*;
public class VoteCount {
public static void main(String[] args) {
//create empty array
int[] votes = new int[5];
//input data
input(votes);
}
public static void input(int[] votes)
{
Scanner kybd = new Scanner(System.in);
System.out.println("Enter vote number of the candidate results: ");
int votecount = kybd.nextInt();
while (votecount !=-1)
{
votes[votecount]++;
System.out.println("Candidate" + votes +"Has" +votecount + "votes");
}
}
}
答案 0 :(得分:0)
您应该使用kybd.hasNext()
来测试是否还有投票号码。你可以像这样在终端输入:
0,1,2,1,3
并修改while()到:
while(kybd.hasNext())
不需要-1
来结束输入,您必须在一行中输入所有投票编号。您可以使用<space>
,逗号或<Tab>
来分割投票号。
答案 1 :(得分:0)
你必须在while循环中读取用户的输入,如下所示:
Scanner kybd = new Scanner(System.in);
System.out.println("Enter vote number of the candidate results: ");
int votecount = kybd.nextInt();
while (votecount !=-1)
{
votes[votecount]++;
System.out.println("Candidate "+names[votecount]+" Has "+votes[votecount]+" votes");
System.out.println("Enter vote number of the candidate results: ");
votecount = kybd.nextInt();
}
另外,“投票”是一个数组,所以打印会给你类似“0 @ 562fb45”的东西,所以让我们说你会创建一些“名字”数组,这将保留候选人的名字,例如这样:
String names = {"Peter", "Tomas", "Jonny", "Mark", "Jane"};