扫描阵列输入

时间:2011-12-10 10:15:20

标签: java arrays sorting

  

可能重复:
  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");

        }
    }
}

2 个答案:

答案 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"};