数组排序输入

时间:2011-12-10 08:45:05

标签: java arrays sorting

我使用数组排序输入重新获得帮助。所以故事是下一个我正在制作一个代码来输入候选人的投票号码(其中有5个)并输出每个候选人的投票数量。它也需要在输入-1时终止。我已经计算了所有排序和交换功能,并且实际输入代码存在问题。我到目前为止所做的不对,但它可能会给你一个想法。

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");        
        }

    }
}

4 个答案:

答案 0 :(得分:1)

你似乎创造了一个无限循环的原因,因为你永远不会在循环中改变它,votecount永远不会等于-1。

您需要做的是将代码移动到您要求的位置并在循环中记录投票。但在进行votes[votecount]++检查之前,请确保用户未输入-1,因为这会导致ArrayOutofBoundsException。因此,您可以永久循环,当用户输入-1时,您可以break循环。

答案 1 :(得分:0)

我会这样做:

import java.util.Scanner;

public class VoteCount {

    public static void main(String[] args) {
        //create empty array
        int[] votes = new int[5];
        //initialise with 0
        for (int i=0; i<5; i++){
            votes[i] = 0;
        }

        //input data
        input(votes);

    }

    public static void input(int[] votes) 
    {
        System.out.println("Enter vote number of the candidate results: ");
        Scanner kybd = new Scanner(System.in);
        int votecount = kybd.nextInt();
        while (votecount !=-1) {
            votes[votecount]++;  
            System.out.println("Candidate " + votecount +" Has " +votes[votecount] + " votes");
            System.out.println("Enter vote number of the candidate results: ");
            votecount = kybd.nextInt();
        }

    }
}

现在您必须添加不允许用户输入高于4且低于-1的任何内容的功能,否则您将获得异常。祝你好运!

答案 2 :(得分:0)

以下是如何从控制台读取并填写votes数组:

public static void main (String[] args){

    String line = null;
    int val = 0;
    BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
    do{
        System.out.println("Usage: Enter votes. Enter -1 to exit");
        int voteNumber = 0; 
        while(voteNumber<5){ 
              try {
                line = is.readLine();
                val = Integer.parseInt(line);
                votes[voteNumber] = val;
                voteNumber++;
              } catch (NumberFormatException ex) {
                System.err.println("Not a valid number: " + line);
                System.out.println("Usage: Enter votes. Enter -1 to exit");
              } 
        }
    }while(val != -1);
}

答案 3 :(得分:0)

使用此代码您正在创建一个无限循环。

相反,你应该写:

votecount = kybd.nextInt(); // in the Loop and At End..

gurung是对..