我正在尝试用Java创建一个投票系统,我在其中输入候选人的姓名和他们收到的投票数,然后我希望能够输出最高投票以及该候选人的姓名。到目前为止,我所掌握的是收集姓名和投票数量的主要方法。它将此信息放入两个数组中。名称的一个字符串数组,以及一个投票数的int数组。我可以通过使用返回int数组中最大数字的值方法来计算最高投票。然后我打印返回的值没有任何问题,但我也希望能够从字符串数组打印出胜利者的名字,所以我想知道有没有什么方法可以将字符串数组中的信息引用到int阵列。我需要使用两个单独的数组才能完成程序。这就是我到目前为止所拥有的
import java.util.Scanner;
public class VotingCounter1
{
public static void main(String [] args){
Scanner userInput = new Scanner(System.in);
final int SIZE = 6;
int[] votes = new int[SIZE];
String[] names = new String[SIZE];
for (int i = 0; i < names.length && i < votes.length; i++){
System.out.print("Enter candidate's name: ");
names[i] = userInput.next( );
System.out.print("Enter number of votes: ");
votes[i] = userInput.nextInt( );
}
System.out.println("And the Winner is: " + highest(votes));
}
public static int highest(int[] votes){
int high = votes[0];
for (int i = 1; i < votes.length; i++){
if (votes[i] > high){
high = votes[i];
}
}
return high;
}
}
答案 0 :(得分:0)
最高投票数的索引与候选人名称的索引相同,因为您使用i
在同一循环中添加了它们。因此,获得最高投票数的索引,您就可以得到相应候选人的名字。
答案 1 :(得分:0)
以下内容将为您提供投票率最高的人的姓名。
names[Arrays.asList(names).indexOf(highest(votes))];
请记住,这将找到最高(投票)的第一个实例。即。如果两个人都有50票,这也是最多票数。将找到带有投票的名字。
或者,使用具有名称和投票属性的对象。更好的设计
答案 2 :(得分:0)
int pointer; // a class variable
public static int highest(int [] votes){ int high = votes [0];
for (int i = 1; i < votes.length; i++){
if (votes[i] > high){
high = votes[i];
pointer = i;
}
}
return high;
现在您可以在打印时使用指针使用名称数组的索引。
System.out.println("And the Winner is: " +names[pointer]+"with"+ highest(votes)+"votes");
答案 3 :(得分:0)
投票和候选人是相同的,因为你加入了相同的循环。最高投票指数是获得最高投票的候选人
System.out.println("And the Winner is: " + highest(votes,names));
public static String highest(int[] votes,String names[]){
int high = votes[0];
String s= names[0];
for (int i = 1; i < votes.length; i++){
if (votes[i] > high){
high = votes[i];
s=names[I];
}
}
s=s+""+high;
return s;
}
答案 4 :(得分:-2)
System.out.println("And the Winner is: " + highest(votes,names));
public static String highest(int[] votes,String names[]){
int high = votes[0];
String s= names[0];
for (int i = 1; i < votes.length; i++){
if (votes[i] > high){
high = votes[i];
s=names[I];
}
}
s=s+""+high;
return s;
}