출력화면
전제조건
- 투표수는 1 ~ 10000 사이의 값을 입력하며, 그 외 값 입력에 대한 예외는 없다고 가정
- 후보자 인원은 2 ~ 10 사이의 값을 입력받으며, 그 외 값 입력에 대한 예외는 없다고 가정
- 후보자 이름은 한글로 입력하며, 10자 미만으로 입력함. (그 외 값 입력에 대한 예외는 없다고 가정)
코드 구현 부분
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("총 진행할 투표수를 입력해 주세요. : ");
int voteCounter = sc.nextInt();
System.out.print("가상 선거를 진행할 후보자 인원을 입력해 주세요. : ");
int personCounter = sc.nextInt();
sc.nextLine();
ArrayList<String> arr = new ArrayList<String>();
for (int i = 0; i < personCounter; i++) {
System.out.printf("%d번째 후보자이름을 입력해 주세요. : ", (i + 1));
String name = sc.nextLine();
arr.add(name);
}
Random random = new Random();
int num = 0;
int[] sum = new int[personCounter];
Arrays.fill(sum, 0);
for (int i = 0; i < voteCounter; i++) {
double rate = (double) (i + 1) / voteCounter * 100;
num = random.nextInt(personCounter) + 1;
System.out.printf("[투표진행률] : %.2f%%, %d명 투표 ==> %s\n", rate, (i + 1), arr.get(num - 1));
sum[num - 1]++;
for (int j = 0; j < personCounter; j++) {
double personreate = (double) sum[j] / voteCounter * 100;
System.out.printf("[기호:%d] %s:", (j + 1), arr.get(j));
if (arr.get(j).length() < 2) {
System.out.print("\t\t");
} else if (arr.get(j).length() < 4) {
System.out.print("\t");
}
System.out.printf("\t%.2f%% \t (투표수: %d)\n", personreate, sum[j]);
}
System.out.println();
}
int max = 0;
int max_index = 0;
for (int i = 0; i < sum.length ; i++) {
if (max < sum[i]) {
max = sum[i];
max_index = i;
}
}
System.out.println("[투표결과] 당선인 : " + arr.get(max_index) );
}
}