我使用数组排序输入重新获得帮助。所以故事是下一个我正在制作一个代码来输入候选人的投票号码(其中有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");
}
}
}
答案 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是对..