Java 数组排序输入

Java 数组排序输入,java,arrays,sorting,Java,Arrays,Sorting,我重新查询有关数组排序输入的帮助。所以接下来的故事是,我正在制作一个代码,输入候选人的投票数(有5个),并输出每个候选人的选票数量。当输入-1时,它也需要终止。我已经计算了所有的排序和交换函数,但实际输入代码有问题。到目前为止我所说的是不对的,但它可能会给你一个想法 import java.util.*; public class VoteCount { public static void main(String[] args) { //create empty a

我重新查询有关数组排序输入的帮助。所以接下来的故事是,我正在制作一个代码,输入候选人的投票数(有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");        
        }

    }
}

您似乎创建了一个无限循环,原因是
votecount
永远不会等于-1,因为您从未在循环中更改它


您需要做的是将代码移动到您请求的位置,并在循环中记录投票。但是在进行
投票[votecount]+
之前,请检查以确保用户没有输入
-1
,因为这将导致出现
排列边界异常。因此,您可以永远循环,当用户输入-1时,您可以
中断循环。

我会这样做:

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

    }
}
import java.util.Scanner;
公共类VoteCount{
公共静态void main(字符串[]args){
//创建空数组
整数[]票=新整数[5];
//用0初始化

对于(int i=0;i以下是如何从控制台读取并填充
投票
数组:

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);
}
publicstaticvoidmain(字符串[]args){
字符串行=null;
int-val=0;
BufferedReader is=新的BufferedReader(新的InputStreamReader(System.in));
做{
System.out.println(“用法:输入投票。输入-1退出”);
int voteNumber=0;

而(voteNumber使用此代码,您正在创建一个无限循环

相反,你应该写:

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

gurung是对的。

votecount=kybd.nextInt();
你需要在循环的最后也这样做。也要做
投票[index++]=votecount
而不是
投票[votecount]++
。输出应该是什么样的?候选编号=按投票数排序的投票数这似乎像是家庭作业……如果是这样,向OP扔代码不会让他学习。此外,当用户输入-1时,您的代码会抛出一个BoundsException数组。忘记让用户输入要输入的候选编号投赞成票。事实上,用户会有一个空白的控制台…这可能会引起混乱。是的,刚才看到了,谢谢…现在差不多完成了…他会知道的,我相信;)你的很接近,这正是我需要的,只有在输入后-1我需要看到一个5名候选人的名单(没有名字,因为第二天还没有确定)每个候选人的票数是1-有2票,可以是2-有4票等等。你能帮忙吗?