사용자가 6개의 숫자를 입력하는 로또 프로그램 입니다.
프로세서 시작 시 숫자를 입력해주세요. 넣게 됩니다.
총 6번의 숫자를 입력받게됩니다.그리고 lotto.txt결과를 가진 파일을 로드하여
사용자가 입력한 값과 결과를 비교하여 몇개를 맞췄는지 검토하는 프로그램 코드를 작성하세요.
lotto.txt
1,15,26,27,23,11
public static void main(String[] args) throws IOException { //Files 로드시 필수로 써주기
Scanner sc = new Scanner(System.in);
List<Integer> list = new ArrayList<>();// 데이터 로드
List<Integer> list2 = new ArrayList<>();// 사용자 입력값
int count = 0;
try {
List<String> data = Files.readAllLines(Paths.get("C:\\lotto.txt"));
for (int i = 0; i < data.size(); i++) {
list.add(Integer.parseInt(data.get(i))); //String list->int list 변환
}
for (int a = 0; a < list.size(); a++) {
System.out.println("숫자를 입력하세요."); //메세지 출력
int user = sc.nextInt(); //사용자 입력값
list2.add(user); //사용자 입력값 배열로 받기
}
for (int ii = 0; ii < list.size(); ii++) { //lotto 설정 값 반복문
for (int aa = 0; aa < list2.size(); aa++) { //사용자 입력 값 반복문
if (list.get(ii) == list2.get(aa)) {
count++; //맞은 개수 카운터
}
}
}
System.out.printf("맞은 개수는 %d개 입니다.", count); //메세지 출력
sc.close(); //스캐너 닫아주기
}
catch (Exception e) {
System.out.println(e);
}
}
}
결과값
코드설명
1. List<String> data = Files.readAllLines(Paths.get("C:\\lotto.txt"));
Files.readAllLines(Paths.get) 메소드를 사용하여 List에 바로 호출하였습니다.
* Files.readAllLines(Paths.get)는 String List로 호출되기 때문에 integer List로 변경해주어야합니다.
2.for (int i = 0; i < data.size(); i++) {
list.add(Integer.parseInt(data.get(i)));
*Integer.parseInt 메소드를 사용하여 String list 를 integer list로 변환했습니다.
이때는 =를 사용하지 않고 .add 메소드를 사용합니다. 이유는 배열이 아니라 list이기 때문입니다.
3.for (int a = 0; a < list.size(); a++) {
System.out.println("숫자를 입력하세요."); //메세지 출력
int user = sc.nextInt(); //사용자 입력값
list2.add(user); //사용자 입력값 배열로 받기
*마찬가지로, 사용자 입력값도 .add메소드를 사용하여 list2에 저장하였습니다.
4.for (int ii = 0; ii < list.size(); ii++) { //lotto 설정 값 반복문
for (int aa = 0; aa < list2.size(); aa++) { //사용자 입력 값 반복문
if (list.get(ii) == list2.get(aa)) {
count++; //맞은 개수 카운터
*list1와 list2는 1차 배열 형태의 list였기 때문에 내부 반복문안에 length가 아닌 외부 반복문과 동일한 형태인 size로설정했습니다.
*주의*
이렇게 파일을 로드하여 코드를 짤때는 main class에 꼭
public static void main(String[] args) throws IOException를 넣어줍니다.
(예상치 못한 오류사항을 확인 해야하기 때문에)
동일 한 이유로, class안에서 try~catch를 사용합니다.
'JAVA > IO' 카테고리의 다른 글
[java/이미지 파일 용량제한] InputStream, byte, available() (0) | 2022.06.27 |
---|---|
[java/File] image File road 정리 (0) | 2022.06.27 |
댓글