Java/Codes

2022 대선 투표 프로그램

펭킹 2022. 3. 14. 01:17

대선 기념으로 투표 프로그램을 제작하였다. 당선 1인은 쉽게 뽑았는데 동률일 때 2명이상의 후보자가 나오는 부분이 어려워서 같은 학원 형에게 도움을 받았다.

 

package march;

import java.util.Scanner;

public class vote_counter_1_3 {
	
	//표수, 동률 뽑아오는 최종버전
	
	static String[][] dn = {{" 이재명","0"},{" 윤석열","0"},{" 심상정","0"},{" 안철수","0"},{,}};//2차원배열에 후보 이름과 표를 저장(string으로 저장됨)
	String duece = "";//후보(들)가 들어가는 부분
	
	
	String vote_cheker(int vote_can)
	{
		int top = Integer.parseInt(dn[0][1]);//비교대상을 후보 1 기준으로 설정
		
		//각 후보 득표수 더하기
		if(vote_can == 1)
		{
			dn[0][1] = Integer.toString(Integer.parseInt(dn[0][1])+1);
		}
		else if(vote_can == 2)
		{
			dn[1][1] = Integer.toString(Integer.parseInt(dn[1][1])+1);
		}
		else if(vote_can == 3)
		{
			dn[2][1] = Integer.toString(Integer.parseInt(dn[2][1])+1);
		}
		else if(vote_can == 4)
		{
			dn[3][1] = Integer.toString(Integer.parseInt(dn[3][1])+1);
		}
		else
		{
			
		}
		
		//후보들 비교해서 1등 뽑기 (후보 2명까지)
		for (int i=0; i< dn.length-1; i++) //배열 길이만큼 반복
		{
	         if (top<Integer.valueOf(dn[i][1]))//각 후보와 1번후보를 비교
	         {
	            top = Integer.valueOf(dn[i][1]);//top에 가장 득표가 많은 후보 넣기
	         }
	    }
		
		duece = "";//후보 들어가는 부분 초기화
		
		for (int i=0; i < dn.length-1; i++) //배열 길이만큼 반복
		{
	         if (top == Integer.valueOf(dn[i][1])) //가장득표가 많은 후보와 다른후보가 같다면
	         {
	        	 duece += dn[i][0];//듀스에 표가 같은 후보 2명이상 반환
	         }
	    }
	
		
		return duece;//듀스값 반환
		
	}
	 
	public static void main(String[] args) {
		
		int vote_can = 0;//사용자 투표 번호
		
		String vote_chk;//투표 할지 안할지
	
		Scanner sc = new Scanner(System.in);//문자
		Scanner sd = new Scanner(System.in);//정수
		
		vote_counter_1_3 vc = new vote_counter_1_3();
	
		System.out.println("[2022 대선 투표 프로그램]");
		System.out.println();
		
		
		while(true)
		{
			
			System.out.printf("안녕하세요. 투표하시겠습니까? (y/n) ");
			vote_chk = sc.nextLine();
			if(vote_chk.equals("y"))
			{
				System.out.println();
				System.out.println("1.이재명 2.윤석열 3.심상정 4.안철수");
				System.out.printf("투표하실 후보를 선택해주세요 : ");
				vote_can = sd.nextInt();//1,2,3,4 중에 한값 받음
				
				vc.vote_cheker(vote_can);//위에 선언한 함수 사용
				
				System.out.println();
				System.out.printf("현재 1등후보는%s 입니다\n", vc.duece);
				System.out.printf("이재명 [%s]표 || 윤석열 [%s]표 || 심상정 [%s]표 || 안철수 [%s]표\n",dn[0][1],dn[1][1],dn[2][1],dn[3][1]);
				System.out.println();
			}
			else
			{
				break;
			}
			
			
		}
		
		System.out.printf("최종 당선인은%s 입니다.\n",vc.duece);
		System.out.println("안녕히가십쇼.");
		
	}

}

실행 결과는 다음과 같이 나온다.

 

[2022 대선 투표 프로그램]

안녕하세요. 투표하시겠습니까? (y/n) y

1.이재명 2.윤석열 3.심상정 4.안철수
투표하실 후보를 선택해주세요 : 1

현재 1등후보는 이재명 입니다
이재명 [1]표 || 윤석열 [0]표 || 심상정 [0]표 || 안철수 [0]표

안녕하세요. 투표하시겠습니까? (y/n) y

1.이재명 2.윤석열 3.심상정 4.안철수
투표하실 후보를 선택해주세요 : 2

현재 1등후보는 이재명 윤석열 입니다
이재명 [1]표 || 윤석열 [1]표 || 심상정 [0]표 || 안철수 [0]표

안녕하세요. 투표하시겠습니까? (y/n) y

1.이재명 2.윤석열 3.심상정 4.안철수
투표하실 후보를 선택해주세요 : 3

현재 1등후보는 이재명 윤석열 심상정 입니다
이재명 [1]표 || 윤석열 [1]표 || 심상정 [1]표 || 안철수 [0]표

안녕하세요. 투표하시겠습니까? (y/n) y

1.이재명 2.윤석열 3.심상정 4.안철수
투표하실 후보를 선택해주세요 : 4

현재 1등후보는 이재명 윤석열 심상정 안철수 입니다
이재명 [1]표 || 윤석열 [1]표 || 심상정 [1]표 || 안철수 [1]표

안녕하세요. 투표하시겠습니까? (y/n) y

1.이재명 2.윤석열 3.심상정 4.안철수
투표하실 후보를 선택해주세요 : 2

현재 1등후보는 윤석열 입니다
이재명 [1]표 || 윤석열 [2]표 || 심상정 [1]표 || 안철수 [1]표

안녕하세요. 투표하시겠습니까? (y/n) n
최종 당선인은 윤석열 입니다.
안녕히가십쇼.

 

duece로 동률을 뽑아내기 위해서는 top값을 위해 한번, 동률을 위해 한번, 총 두번의 반복문을 돌려 나온 값을 duece에 담는다.