본문 바로가기

TIL/Java

(30)
Java 차량5부제 코드 만들기 3주 만에 블로그를 쓴다 3주 동안은 학원 Java수업이 아닌 Step으로 컴퓨터 공학 관련 수업을 온라인으로 수강하였다. 3주가 지나고, 수업이 시작됨과 동시에 역시나.. 코드 만들기 숙제는 여전했다 ​ 오늘은 자세한 숙제설명 없이 딱 사진 한 장만 주어지고, 사진에 맞게 코드를 작성하라고 하셨다 (ㄷㄷ..;;) (문제의 그 사진) 사진을 보았을 때, 가장 먼저 코드를 작성해야 하는 것은 car 클래스라고 생각했다. ​ 그리고 4가지의 경우의 수를 나눴는데, 1. 언제부터 차량5부제가 시행하였는가? 2. 공휴일에는 모든 차량 출입이 허가된다. 3. "장애인", "유아동승", "경차"는 언제든지 출입이 허가된다. 4. 요일별로 차량 끝번호에 따라 출입이 허가/통제된다. ​ 맨 처음에는 Car라는 클래스를..
Java 주민등록번호 유효성 체크 입력받은 값이 주민등록번호로써 유효한지 체크해주는 프로그램 boolean값으로 check를 true로 넣고, 들어오면 안 되는 값들이 들어왔을 시에 각각 조건문에서 false를 반환해준다. ​ 첫번째는 숫자만 들어와야 하기 때문에 checkDigit 함수를 따로 만들어서 걸러준다 (주민번호 가운데에 '-'가 있기 때문에, 코드가 조금 길어져서 따로 메서드를 만들어주었다) ​ 그리고 길이가 알맞지 않았을 때, 7번째 자리에 '-'가 들어가지 않았을 때, 3번째 자리에 1보다 값이 커졌을 때 (달은 12월까지밖에 없어서), 4번째 자리에 (3번째 자리가 1인데 4번째가 2보다 클 때), ​ 주민번호 뒷자리에서 뒷자리 첫 번째 수가 4보다 커졌을 때(성별 체크), 그리고 각 월마다 최대 일수가 30일, 31일..
Java 핸드폰번호 유효성 체크 입력받은 숫자가 핸드폰 번호로써 유효한지 체크하는 프로그램 1. 첫번째 세 글자에는 010 이 들어와야 한다 2 모두 숫자로 이루어져 있어야 한다 3. 총길이가 11자리 숫자여야 한다. ​ 핸드폰 번호는 숫자여서 int가 아닌 전체를 다 받아야 하기 때문에 String 형식으로 인자 값을 받는다 ​ 첫 번째 문항을 확인할 때, Integer.parseInt Integer.parseInt를 이용하여 010 인지 비교해도 되고 tocharArray를 통해 한 글자씩 비교해도 된다. 비교했을 시., 알맞게 들어왔다면 기존에 false 였던 fritNum을 true로 반환해준다 ​ 두 번째 문항을 확인할 때, 받은 번호의 길이까지 반복문을 돌리고 각 char를 ch로 받아서 숫자인지 체크한다 그리고 다 맞았을 ..
Java 학교 (학생들의 성적표 만들기) 1. 각 반의 정원은 30명이다 2. 프로그래밍 반 학생들은 각자의 국어, 영어, 수학, 프로그래밍 언어, 알고리즘, 자료구조 점수가 있다 2-1 (네트워크반은 국어 영어만 동일하고 과목이다름. => 만드는 법 프로그래밍반과 동일하여 생략) 3. 모든학생의 점수와 이름을 랜덤으로 생성한다 학번은 중복없이중복 없이 순차적으로 생성되어야 한다 (또는 중복 없이 랜덤도 가능) 4. 성적표 매서드를 통해 각 학생의 이름/총점/평균점수를 볼 수 있어야 한다 ​ 메인에서는 메서드를 가져오는 코드만 있다. (코드의 가독성을 높이고, 깔끔하게 보이기 위해서) 한 반당 정원이 30명이기 때문에, 반복문을 school.length 까지만 돌리고 school 배열 안에 인덱스 순서대로 학생을 넣는다 그리고 그 학생들의 성적..
Java 섯다 게임 구현하기 섯다 룰 (무조건 카드덱 만드는 것부터 보세요!) ​ 1. 카드는 총 20장 1부터 10까지 2개의 덱이 있다고 생각하면 된다 1 3 8 에는 광이 들어감 4 7 9 에는 동물이 들어감 ​ 2. 카드를 총 2장 받는데 한 장씩 받고 베팅 후 나머지 한 장을 받음 카드 두 개를 더한 것이 최종 값 카드 합이 10이 될 경우 0으로 처리 족보가 없을 경우에 카드 합이 10이 넘어갈 시에는 일의 자리 숫자가 총합이 됨 ​ 3. 같은 숫자끼리 만나면 땡으로 변함 땡은 일반 숫자보다 높음 37(3광이랑 7 동물이 만나면) 모든 땡은 37 땡잡이한테 잡힘 ​ 4. 광끼리 만나면 광땡이 되고 38 광땡이 제일 높음 (무조건 이김) 13/18 광땡은 상대가 47(2개다 동물) 일시 47 땡잡이가 이김 ​ 5. 4와 9..
Java Yacht dice game 구현하기 yacht게임은 주사위 5개를 굴려서 5개의 조합을 바탕으로 족보 싸움을 하는 게임이다. 족보에는 [5다이스, 4 다이스, 라지 스트레이트, 스몰 스트레이트, 풀하우스]가 있다. ​ ​ Yacht라는 클래스를 만들고, 바뀌지 않을 값 MAX_DICE_NUM (주사위 숫자) / DICE_SIZE (최대 주사위 개수)를 지정한다 ​ 생성자를 만들어서 = (public Yacht()) 랜덤클래스를 이용한 ran을 넣고 주사위는 최대 주사위 갯수만큼 int형 배열로 dices로 지정 카운트는 주사위 숫자만큼 int형 배열로 counts로 지정한다. ​ roll 이라는 메서드는 한 개의 주사위의 던져 그 해당 주사위의 숫자를 알 수 있게 한다 ​ printDice 라는 메서드는 플레이어가 가지고 있는 주사위들을 ..
Java 로또만들기 정답버전 처음에는 변하지 않을 값들을 final를 통해 지정해 놓는다 로또번호가 나올수 있는 것을 LOTTO_SIZE = 45 보너스 번호는 몇번째에 나오게 할 것인가를 BOUNUS_INDEX = 4 ​ 그리고 HashSet 배열을 만들어서 lotto로 지정하고 (중복 없이 값을 넣기 위해 HashSet 사용) ​ 인자값을 int 형 변수 len으로 받는다 ​ 이렇게 메서드를 만들면, 로또 당첨번호를 무작위로 중복 없이 뽑을 때랑 내가 로또번호를 추첨할때랑 길이만 다르게 하면 되기 때문에 매머드 하나로 두 가지를 만들 수 있다 ​ 일단, 당첨번호를 생성하는데 while문을 통하여 설정한 길이 len 과 lotto.size() 즉, 로또 번호의 총 길이와 설정한 길이 같을 때까지 반복해서 값을 넣는다는 뜻 ​ 그리..
Java 로또만들기 - (오류발견 : 보너스번호관련) 처음에는 HashSet 로 로또 넘버를 추첨할 Set형식을 만드는데, 여기서 HashSet을 사용한 이유는 : 중복된 번호를 뽑지 못하기 위해 사용하였다 ​ 당첨번호를 뽑을때는 while문을 사용하여 앞서 만들었던 HashSet 형 로또 넘버의 사이즈가 7이 될 때까지 랜덤으로 번호를 뽑는다 (랜덤번호는 1~45까지 맞춤) ​ 여기서 오류!! HashSet으로 번호를 뽑을 때, 중복이 안된다는 장점이 있지만 반면에 뽑은 숫자가 Set으로 들어갈 때, 랜덤으로 인덱스가 형성된다는 점 즉, 보너스 번호가 어딨는지 모른다는 점이다. ​ 문제가 발생할지 몰랐을 때는, 그저 HashSet에 마지막 인덱스가 보너스 번호라고 인지했었다 하지만 HashSet에는 인덱스를 확인할 수 없어서 ArrayList를 만들고 로..