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