-
[JAVA/자바] 제비뽑기 ( = 룰렛) 예제 [고정배열/Array]Language/Java 2018. 3. 11. 21:09반응형
제비뽑기
만들고 싶은 기능
1. 고정배열 ( = Array ) 을 사용한다.
2. 메모장에 이름을 입력하여 , 추가 및 제거 ,
즉 수정을 손쉽게 할 수 있어야 한다.
3. 랜덤으로 선정한다.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657import java.io.*;import java.util.*;class DSG1{ // Drawing Straws Game 1FileReader fr;BufferedReader br;String fileName = "NameList.txt";String line;int count , i;String nameArray[];DSG1(){try{fr = new FileReader(fileName);br = new BufferedReader(fr);while((line = br.readLine()) != null){if(line.length() != 0){line = line.trim();count++;}}//System.out.println("몇줄인지 확인 : " + count); 메모장 줄 확인}catch(FileNotFoundException fnfe){}catch(IOException ioe){}}void saveName(){ // 배열에 사람이름을 넣는다.try{fr = new FileReader(fileName);br = new BufferedReader(fr);nameArray = new String[count];while((line = br.readLine()) != null){if(line.length() != 0){line = line.trim();nameArray[i] = line;//System.out.println(nameArray[i]);i++;}}}catch(FileNotFoundException fnfe){System.out.println(fileName + " : NOT FOUND");}catch(IOException ioe){}}void ranName(){Random random = new Random();int ran = random.nextInt(count);System.out.println("당첨자 : " + nameArray[ran]);}public static void main(String[] args){DSG1 dsg1 = new DSG1();dsg1.saveName();dsg1.ranName();}}cs 5 , 6 줄 → 14 , 15 줄
IO 입출력이다.
FileReader fr = new FileReader(fileName); 으로
fileName = "NameList.txt"; 을 읽는다.
BuffredReader br = new BufferedReader(fr); 은 fr
즉 메모장으로 읽은 FileReader 을 BufferedReader 로 읽어서,
cmd 창에서 출력해주는 역할을 한다.
16 줄
While 반복문은 메모장이 몇줄인지
즉, 사람이 몇명 있는지 count++; 로써 확인을 하는 단계이다.
line = br.readLine(); 한줄 읽는 것이 != null
즉 빈공간이 아니라면, 하나씩 카운트를 증가 시킨다.
그리하여 26줄이 확인 된다.
즉 26명이 있다는 뜻이다.
33 줄
While 반복문은 String nameArray[] = new String[count];
에서 count 는 26이니 방을 26개 만든다는 의미가 된다.
그안에 사람의 이름을 집어넣으려는 로직이다.
37줄
그리고 출력해보니 모든 사람의 이름이 전부 나오는것을 확인 할 수 있다.
46줄
void ranName(){} 의 내용들은 랜덤로직이다.
int ran = random.nextInt(count);
카운트를 넣은 이유는 방크기가 카운트 만큼이기 때문에 ,
26명중에 랜덤이라는 의미이다.
그렇기 때문에 출력 nameArray[ran]; 을 넣어
총크기 26중에서 랜덤을 하는 것이다.
그리고 만약에 텍스트 파일이 없다면 다음과 같은 예외가 발생하게 된다.
사실 복습하는 형식으로 했기 때문에 완벽하지 않고,
중복되는 로직이 있을 수 있습니다.
더 효율적으로 수정하고 싶은데 도움을 주시면 감사하겠습니다.
반응형'Language > Java' 카테고리의 다른 글
[JAVA/자바] 제비뽑기 확률 조정 100% 까지 [가변배열/Vector/ArrayList] (0) 2018.03.14 [JAVA/자바] 제비뽑기 확률 조정 [가변배열/배열] (0) 2018.03.14 [JAVA/자바/TIP2] FileReader ( cmd 창에 txt 파일 읽기/출력하기 ) (2) 2018.03.05 [JAVA/자바/TIP1] substring ( 문자열분리 ) (2) 2018.03.05 [JAVA/자바] 로또 예제 (0) 2018.03.02