우당탕탕 개발일지
5일차_과제 본문
반응형
1. 주차장 관리 프로그램
최대 5대의 차가 주차할 수 있는 주차장이 있습니다.
1~4 중 메뉴를 선택하면 메뉴에 알맞는 행동을 진행하세요.
[ 실행 결과 ]
*********
1. 입차
2. 출차
3. 리스트
4. 종료
*********
메뉴 :
1번
위치 입력 : 3
위치 3에 입차/이미 주차되어 있습니다.
2번
위치 입럭 : 4
위치 4에 출차/주차 되어 있지 않습니다.
3번
위치 1 : true
위치 2 : false
위치 3 : true
위치 4 : false
위치 5 : false
4번
프로그램이 종료되었습니다.
package array;
import java.util.Scanner;
public class Parking {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean[] park = new boolean[5];
int num = 0, location = 0;
boolean go = true;
while(go) {
System.out.print("*********\n" +
"1. 입차\n" +
"2. 출차\n" +
"3. 리스트\n" +
"4. 종료\n" +
"*********\n"
+ "메뉴 : ");
num = sc.nextInt(); // 메뉴 입력
System.out.println(num+"번");
switch (num) {
case 1:
while(true) {
System.out.println("메뉴로 돌아가기 : 0");
System.out.print("위치 입력 : ");
location = sc.nextInt();
if(location == 0)break;
if(park[location-1]) {
System.out.println("위치 " + location + "에 이미 주차되어 있습니다.\n 다른 위치를 선택해주세요.");
}else {
park[location-1] = true;
System.out.println("위치 " + location + "에 입차하였습니다.");
break;
}
}
break;
case 2:
while(true) {
System.out.println("메뉴로 돌아가기 : 0");
System.out.print("위치 입력 : ");
location = sc.nextInt();
if(location == 0)break;
if(!park[location-1]) {
System.out.println("위치 " + location + "은 비어있는 위치입니다. \n 다른 위치를 선택해주세요.");
}else {
park[location-1] = false;
System.out.println("위치 " + location + "에 출차되었습니다.");
break;
}
}
break;
case 3:
for(int i=0; i<park.length; i++) {
System.out.println("위치 "+ (i+1) + " : " + park[i]);
}
break;
case 4:
go = false;
System.out.println("프로그램이 종료되었습니다.");
break;
default:
System.out.println("잘못입력하였습니다. \n1~4 중에서 1개의 숫자를 입력해주세요.");
break;
}
System.out.println();
}
}
}
이미 주차되어 있거나, 이미 비어 있을 경우에 대한 처리하라는 조건은 없었지만 한번 구현해보았다...!
2. 로또
1. 길이가 6인 배열은 1 ~ 45사이의 정수형 값을 가지고 있다.
2. 각각의 원소는 중복되면 안된다.
3. 배열은 오름차순 정렬이 되어야 한다.
4. 1판당 1000원이며 입력된 현금을 최대로 사용한다.
5. 출력 값은 5자리로 맞춘다.
6. 5줄 마다 줄바꿈을 한다.
[실행결과]
현금 입력 : 3200
로또 번호 6개
package array;
import java.util.*;
public class Lotto {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("현금 입력 : ");
int money = sc.nextInt();
for(int n=0; n<money/1000; n++) {
// 초기화
int[] lotto = new int[6];
// 5번째 줄마다 줄 바꿈
if(n != 0 && n % 5 == 0) {
System.out.println();
}
// 난수 6개 출력
for(int i=0; i<lotto.length; i++) {
boolean isNotFind = true; // 못 찾으면 true
while(isNotFind) {
int num = (int)(Math.random() * 45 + 1);
// 중복 방지
for(int j=0; j<=i; j++) {
if(num == lotto[j]) {
// 중복이면 빠져 나가기
break;
}else if(j == i) {
// 중복 X && 마지막 번호
lotto[i] = num;
isNotFind = false;
}
}
}
}
// 로또 번호 출력
Arrays.sort(lotto);
for(int l : lotto) {
System.out.print(l + "\t");
}
System.out.println();
}
}
}
로또는 중복 부분을 처리하기 까다로웠다.
HashSet를 사용하였으면 더 쉽게 해결할 수 있었으나,
아직 수업 시간에 나가지 않은 부분이라 while과 for문을 사용하여 구현하였다.
반응형