TIL/JAVA
23.05.03
J1-H00N
2023. 5. 3. 20:56
2차원 배열, 다차원 배열, 순회
package nadocoding.Chap_04;
public class _11_Continue {
public static void main(String[] args) {
// Continue
// 치킨 주문 손님중에 노쇼 손님이 있다고 가정
// For
int max = 20;
int sold = 0;
int noShow = 17;
for (int i = 1; i <= 50; i++) {
System.out.println(i + "번 손님, 주문하신 치킨 나왔습니다.");
// 치킨을 가져가는 상황
// 손님이 없다면??
if (i == noShow) {
System.out.println(i + "번 손님, 노쇼로 인해 다음 손님에게 기회가 넘어갑니다.");
continue; // 아래 명령은 모두 건너뜀
}
sold++;
if (sold == max) {
System.out.println("금일 재료가 모두 소진되었습니다.");
break;
}
}
System.out.println("영업을 종료합니다.");
System.out.println("----------------");
// while 문
sold = 0;
int index = 0;
// while (index <= 50) {
while (true) {
index += 1;
System.out.println(index + "번 손님, 주문하신 치킨 나왔습니다.");
// noshow
if (index == noShow) {
System.out.println(index + "번 손님, 노쇼로 인해 다음 손님에게 기회가 넘어갑니다.");
continue; // 아래 명령은 모두 건너뜀
}
sold++;
if (sold == max) {
System.out.println("금일 재료가 모두 소진되었습니다.");
break;
}
}
System.out.println("영업을 종료합니다.");
}
}
package nadocoding.Chap_04;
public class _Quiz_04 {
public static void main(String[] args) {
/*
조건문을 활용하여 주차 요금 정산 프로그램 만들기
1. 주차요금은 시간당 4000원 (일일 최대 요금은 30000원)
2. 경차 또는 장애인 차량은 최종 요금에서 50% 할인
ex)
일반 차량 5시간 주차 시 20000원
경차 5시간 주차 시 10000원
장애인 차량 10시간 주차 시 15000원
출력 결과 : 주차 요금은 xx원 입니다.
*/
int parkingHour = 10;
int fee = parkingHour * 4000;
if (fee > 30000) {
fee = 30000;
}
boolean smallCar = false;
boolean withDisabledPerson = true;
if (smallCar || withDisabledPerson) {
fee /= 2;
}
System.out.println("주차 요금은 " + fee + "원 입니다.");
}
}
package nadocoding.Chap_05;
public class _01_Array {
public static void main(String[] args) {
// 배열 : 같은 자료형의 값 여러개를 저장하는 연속된 공간
// String 사용 시
String coffeeRoss = "아메리카노";
String coffeeRachel = "카페모카";
String coffeeChandler = "라떼";
String coffeeMonica = "카푸치노";
System.out.println(coffeeRoss + " 하나");
System.out.println(coffeeRachel + " 하나");
System.out.println(coffeeChandler + " 하나");
System.out.println(coffeeMonica + " 하나");
System.out.println("주세요");
// 배열 선언 첫 번째 방법
// String[] coffees = new String[4]; // 크기가 4인 coffees라는 배열 선언
// 배열 선언 두 번째 방법
// String coffees[] = new String[4]; // 배열 이름 뒤에 [] 붙여서도 선언 가능
// coffees[0] = "아메리카노"; // 배열 첫 번째에 값 저장
// coffees[1] = "카페모카";
// coffees[2] = "라떼";
// coffees[3] = "카푸치노";
// 배열 선언 세 번째 방법
// String[] coffees = new String[] {"아메리카노", "카페모카", "라떼", "카푸치노"};
// 배열 선언 네 번째 방법
String[] coffees = {"아메리카노", "카페모카", "라떼", "카푸치노"};
System.out.println("--------------");
System.out.println(coffees[0] + " 하나");
System.out.println(coffees[1] + " 하나");
coffees[2] = "에스프레소"; // 배열 값 변경
System.out.println(coffees[2] + " 하나");
System.out.println(coffees[3] + " 하나");
System.out.println("주세요");
// 다른 자료형?
int[] i = new int[3];
i[0] = 1;
i[1] = 2;
i[2] = 3;
double[] d = new double[] {10.0, 11.2, 13.5};
boolean[] b = {true, false, true};
}
}
package nadocoding.Chap_05;
public class _02_ArrayLoop {
public static void main(String[] args) {
// 배열의 순회
String[] coffees = {"아메리카노", "카페모카", "라떼", "카푸치노"};
// System.out.println(coffees[0] + " 하나");
// System.out.println(coffees[1] + " 하나");
// ...
// for 반복문 순회
for (int i = 0; i < 4; i++) {
System.out.println(coffees[i] + " 하나");
}
System.out.println("주세요");
System.out.println("--------------");
// 배열의 길이를 이용한 순회
for (int i = 0; i < coffees.length; i++) {
System.out.println(coffees[i] + " 하나");
}
System.out.println("주세요");
System.out.println("--------------");
// enhanced for (for-each) 반복문
// foreach른 통해 기본 틀 만들 수 있음
// for (:
// ) {
//
// }
for (String coffee : coffees) { // coffees라는 배열의 값들을 순서대로 coffee 라는 문자열에 저장
System.out.println(coffee + " 하나");
}
System.out.println("주세요");
}
}
package nadocoding.Chap_05;
public class _03_MultiArray {
public static void main(String[] args) {
// 다차원 배열
// 소규모 영화관 좌석
// A1 - A5
// B1 - B5
// C1 - C5
String[] seatA = {"A1", "A2", "A3", "A4", "A5"};
String[] seatB = {"B1", "B2", "B3", "B4", "B5"};
String[] seatC = {"C1", "C2", "C3", "C4", "C5"};
// 3 x 5 크기의 2차원 배열
String[][] seats = new String[][] {
{"A1", "A2", "A3", "A4", "A5"},
{"B1", "B2", "B3", "B4", "B5"},
{"C1", "C2", "C3", "C4", "C5"}
};
// B2에 접근하려면?
System.out.println(seats[1][1]); // B2
// C5에 접근하려면? // [세로][가로]
System.out.println(seats[2][4]); // C5
// 첫 줄에는 3칸, 둘째 줄에는 4칸, 셋째 줄에는 5칸
String[][] seats2 = {
{"A1", "A2", "A3"},
{"B1", "B2", "B3", "B4"},
{"C1", "C2", "C3", "C4", "C5"}
};
// A3에 접근하려면?
System.out.println(seats2[0][2]);
// A5에 접근하려면?
// System.out.println(seats2[0][4]); // ArrayIndexOutOfBoundsException 오류
// 3차원 배열 만들기
String[][][] marray = new String[][][] {
{ {}, {}, {} },
{ {}, {}, {} },
{ {}, {}, {} }
};
String[][][] array3 = new String[3][3][3];
}
}
package nadocoding.Chap_05;
public class _04_MultiArrayLoop {
public static void main(String[] args) {
// 다차원 배열 순회
String[][] seats = new String[][] {
{"A1", "A2", "A3", "A4", "A5"},
{"B1", "B2", "B3", "B4", "B5"},
{"C1", "C2", "C3", "C4", "C5"}
};
for (int i = 0; i < 3; i++) { // 세로
for (int j = 0; j < 5; j++) { // 가로
System.out.print(seats[i][j] + " ");
}
System.out.println();
}
System.out.println("-----------------");
String[][] seats2 = {
{"A1", "A2", "A3"},
{"B1", "B2", "B3", "B4"},
{"C1", "C2", "C3", "C4", "C5"}
};
for (int i = 0; i < seats2.length; i++) { // 세로
for (int j = 0; j < seats2[i].length; j++) { // 가로
System.out.print(seats2[i][j] + " ");
}
System.out.println();
}
System.out.println("-----------------");
String[][] seats3 = new String[10][15];
String[] eng = {"A", "B", "C", "D", "E", "F","G", "H", "I", "J"};
for (int i = 0; i < seats3.length; i++) {
for (int j = 0; j < seats3[i].length; j++) {
seats3[i][j] = eng[i] + (j + 1);
}
}
// 표 구매
seats3[7][8] = "__";
seats3[7][9] = "___";
// 영화관 좌석 번호 확인
for (int i = 0; i < seats3.length; i++) { // 세로
for (int j = 0; j < seats3[i].length; j++) { // 가로
System.out.print(seats3[i][j] + " ");
}
System.out.println();
}
}
}
package nadocoding.Chap_05;
public class _05_ASCII {
public static void main(String[] args) {
// 아스키 코드 (ANSI) : 미국 표준 코드
char c = 'A'; // 알파벳 대문자(A)는 65부터 시작, 소문자(a)는 97부터 시작, 숫자(0)는 48부터 시작
System.out.println(c); // A
System.out.println((int)c); // 65
c = 'B';
System.out.println(c); // B
System.out.println((int)c); // 66
c++;
System.out.println(c); // C
System.out.println((int)c); // 67
String[][] seats3 = new String[10][15];
char ch = 'A';
for (int i = 0; i < seats3.length; i++) {
for (int j = 0; j < seats3[i].length; j++) {
seats3[i][j] = String.valueOf(ch) + (j + 1);
System.out.print(seats3[i][j] + " ");
}
ch++;
System.out.println();
}
//
// for (int i = 0; i < seats3.length; i++) { // 세로
// for (int j = 0; j < seats3[i].length; j++) { // 가로
// System.out.print(seats3[i][j] + " ");
// }
// System.out.println();
// }
}
}
package nadocoding.Chap_05;
public class _Quiz_05 {
public static void main(String[] args) {
/*
배열을 활용하여 쇼핑몰에서 구매 가능한 신발 사이즈 옵션을 출력하는 프로그램을 작성하시오
1. 신발 사이즈는 250부터 295까지 5 단위로 증가
2. 신발 사이즈 수는 총 10가지
ex)
사이즈 250 (재고 있음)
사이즈 255 (재고 있음)
...
*/
int[] sizeArray = new int[10];
for (int i = 0; i < sizeArray.length; i++) {
sizeArray[i] = 250 + i * 5;
}
for (int size:
sizeArray) {
System.out.println("사이즈 " + size + " (재고 있음)");
}
}
}
package nadocoding.Chap_06;
public class _01_Method {
// 메소드 정의
public static void sayHello() {
System.out.println("안녕하세요 메소드입니다.");
}
public static void main(String[] args) {
// 메소드 호출
System.out.println("메소드 호출 전");
sayHello();
sayHello();
sayHello();
System.out.println("메소드 호출 후");
}
}
package nadocoding.Chap_06;
public class _02_Parameter {
// 전달값이 있는 메소드
public static void power(int a) { // a = Parameter, 매개변수
int result = a * a;
System.out.println(a + " 의 2 승은 " + result);
}
public static void powerByExp(int number, int exponent) {
int result = 1;
for (int i = 0; i < exponent; i++) {
result *= number;
}
System.out.println(number + " 의 " + exponent + " 승은 " + result);
}
public static void main(String[] args) {
// 전달값, parameter
// 2 -> 2 * 2 = 4
// 3 -> 3 * 3 = 9
// 2 = Argument, 인수
power(2); // 2 의 2 승은 4
power(3); // 3 의 2 승은 9
powerByExp(3,3); // 3 의 3 승은 27
powerByExp(2,5); // 2 의 5 승은 32
powerByExp(10,0); // 10 의 0 승은 1
}
}
package nadocoding.Chap_06;
public class _03_Return {
// 호텔 전화번호
public static String getPhoneNumber() {
String phoneNumber = "02-1234-5678";
return phoneNumber;
}
// 호텔 주소
public static String getAddress() {
String address = "서울시 어딘가";
return address;
}
// 호텔 액티비티
public static String getActivity() {
return "볼링장, 탁구장, 노래방";
}
public static void main(String[] args) {
// 반환값
String contactNumber = getPhoneNumber();
System.out.println("호텔 전화번호 : " + contactNumber);
String address = getAddress();
System.out.println("호텔 주소 : " + address);
System.out.println("호텔 액티비티 : " + getActivity());
}
}
package nadocoding.Chap_06;
public class _04_ParameterAndReturn {
public static int getPower(int number) {
int result = number * number;
return result;
// return number * number;
}
public static int getPowerByExp(int number, int exponent) {
int result = 1;
for (int i = 0; i < exponent; i++) {
result *= number;
}
return result;
}
public static void main(String[] args) {
// 전달값과 반환값이 있는 메소드
int retVal = getPower(2);
System.out.println(retVal); // 4
retVal = getPower(3);
System.out.println(retVal); // 9
retVal = getPowerByExp(3,3);
System.out.println(retVal); // 27
System.out.println(getPowerByExp(2,4)); // 16
System.out.println(getPowerByExp(5,0)); // 1
}
}
package nadocoding.Chap_06;
public class _05_Overloading {
public static int getPower(int number) {
int result = number * number;
return result;
// return number * number;
}
public static int getPower(String strNumber) {
int number = Integer.parseInt(strNumber);
return number * number;
}
public static int getPower(int number, int exponent) {
int result = 1;
for (int i = 0; i < exponent; i++) {
result *= number;
}
return result;
}
public static void main(String[] args) {
// 메소드 오버로딩
// 같은 이름의 메소드를 여러 번 선언하는 것
// 1. 전달값의 타입이 다르거나
// 2. 전달값의 개수가 다르거나
// 반환값이 다른 경우는 X
System.out.println(getPower(3)); // 9
System.out.println(getPower("4")); // 16
System.out.println(getPower(3,3)); // 27
}
}
package nadocoding.Chap_06;
public class _06_WhenToUse {
public static int getPower(int number) {
// int result = number * number;
// return result;
// return number * number;
return getPower(number,2);
}
public static int getPower(int number, int exponent) {
int result = 1;
for (int i = 0; i < exponent; i++) {
result *= number;
}
return result;
}
public static void main(String[] args) {
// 메소드가 필요한 이유
// 2의 2승을 구하기
// int result = 1;
// for (int i = 0; i < 2; i++) {
// result *= 2;
// }
// System.out.println(result); // 4
System.out.println(getPower(2,2));
// 3의 3승을 구하기
// result = 1;
// for (int i = 0; i < 3; i++) {
// result *= 3;
// }
// System.out.println(result); // 27
System.out.println(getPower(3,3));
// 4의 2승을 구하기
// result = 1;
// for (int i = 0; i < 2; i++) {
// result *= 4;
// }
// System.out.println(result); // 16
System.out.println(getPower(4,2));
}
}
package nadocoding.Chap_06;
public class _07_VariableScope {
public static void methodA() {
// System.out.println(number);
// System.out.println(result);
}
public static void methodB() {
int result = 1; // 지역 변수
}
public static void main(String[] args) {
int number = 3; // 지역 변수
// System.out.println(result);
for (int i = 0; i < 5; i++) { // i도 지역변수
System.out.println(i);
}
// System.out.println(i);
{
int j = 0; // 지역변수
System.out.println(j);
System.out.println(number); // number와 같은 메소드에 있기에 사용 가능
}
// System.out.println(j);
}
}
package nadocoding.Chap_06;
public class _08_MainMethod {
// run -> edit Configuration -> Name => Test -> build and run => nadocoding.Chap_06._08_MainMethod
public static void main(String[] args) { // 메인 메소드
for (String s : args) {
System.out.println(s);
}
// 1. 도서 조회
// 2. 도서 대출
// 3. 도서 반납
if (args.length == 1) {
switch (args[0]) {
case "1" :
System.out.println("도서 조회 메뉴입니다.");
break;
case "2" :
System.out.println("도서 대출 메뉴입니다.");
break;
case "3" :
System.out.println("도서 반납 메뉴입니다.");
break;
default:
System.out.println("잘못 입력하였습니다.");
}
} else {
System.out.println("사용법) 1~3 중 하나를 입력해주세요");
}
}
}
package nadocoding.Chap_06;
/*
개인 정보 중 일부를 비공개로 전환하는 프로그램을 작성하시오
1. 개인정보를 비공개로 전환하는 메소드 작성
2. 하나의 메소드에서 모든 동작 처리
3. 각 정보는 아래 위치부터 비공개 적용
이름 : 두번째 글자부터
주민 등록 번호 : 뒷자리 두번째 자리부터
전화번호 : 마지막 네자리
ex)
나코딩
990130-1234567
010-1234-5678
나**
990130-1******
010-1234-****
*/
public class _Quiz_06 {
public static String getHiddenData(String data, int index) {
String blur = data.substring(0, index);
for (int i = index; i < data.length(); i++) {
blur += "*";
}
return blur;
}
public static void main(String[] args) {
String name = "나코딩"; // 이름
String id = "990130-1234567"; // 주민등록번호
String phone = "010-1234-5678"; // 전화번호
System.out.println("이름 : " + getHiddenData(name, 1)); // 개인정보, 비공개 시작 위치
System.out.println("주민등록번호 : " + getHiddenData(id, 8));
System.out.println("전화번호 : " + getHiddenData(phone, 9));
}
}