네이버 클라우드 활동 [o]
3주 3일차 강의 [o]
네이버 클라우드 사수 도움 요청 업무 [o]
팀장님 지시 업무 [o]
중간/일일 업무 보고 작성 [o]
정기 팀/동기 스터디 모임 참석 및 성실도 [x] == 정기 팀 회의 없는 날 (공휴일)
프로그램의 흐름을 제어하는 데 사용됩니다.
조건문은 주어진 조건이 참(true)인 경우에만 특정 코드 블록을 실행하거나 건너뛸 수 있도록 합니다.
주로 if, else if, else 키워드를 사용하여 조건문을 작성합니다.
if
if (condition) {
// 실행할 코드
}
else if
if (condition1) {
// 실행할 코드
} else if (condition2) {
// 다른 코드 실행
}
else
if (condition1) {
// 실행할 코드
} else if (condition2) {
// 다른 코드 실행
} else {
// 모든 조건이 거짓일 때 실행할 코드
}
variable = (condition) ? value1 : value2;
//condition이 참이면 value1을 변수에 할당하고, 거짓이면 value2를 할당합니다.
//조건문과 삼항 연산자를 적절히 활용하여 프로그램의 흐름을 제어하고 값을 할당할 수 있습니다.
//이를 통해 코드를 간결하게 작성하고 효율적으로 조건을 처리할 수 있습니다.
public class AvocadoSituation {
public static void main(String[] args) {
int milkCount = 0;
int avocadoCount = 0;
boolean existedAvocado = true;
// 조건문을 삼항 연산자로 변경
milkCount = (existedAvocado) ? 6 : 0;
String comment = String.format("장보고 돌아왔어 %d개 아보카도, %d개 우유 사왔어", avocadoCount, milkCount);
System.out.println(comment);
}
}
import java.util.logging.Logger;
public class DepartmentStore {
private static final Logger logger = Logger.getLogger(DepartmentStore.class.getName());
public static void main(String[] args) {
int usageAmount = 5000;
int parkingTime = 6;
int parkingTimeDiscount = 0;
int totalParkingTime = 0;
if (usageAmount >= 200000) {
parkingTimeDiscount = 5;
} else if (usageAmount >= 100000) {
parkingTimeDiscount = 4;
} else if (usageAmount >= 50000) {
parkingTimeDiscount = 3;
} else if (usageAmount >= 30000) {
parkingTimeDiscount = 2;
} else if (usageAmount >= 10000) {
parkingTimeDiscount = 1;
} else {
String unsatisfied = String.valueOf("할인 최소 금액이 충족되지 않아 할인이 불가능합니다.");
logger.info(unsatisfied);
}
totalParkingTime = parkingTime - parkingTimeDiscount;
String result = String.format("고객님 %d원를 사용하셔서 %d시간 결제하셔야합니다.", usageAmount, totalParkingTime);
logger.info(result);
}
}
초기화식
: 반복문 진입 시 한 번만 실행되는 초기화 코드
조건식
: 각 반복마다 평가되는 조건
증감식
: 각 반복이 끝난 후 실행되는 코드
for (초기화식; 조건식; 증감식) {
// 실행할 코드
}
while (조건식) {
// 실행할 코드
}
for(초기화식; 조건식; 증감식){ // 외부 for문
for(초기화식; 조건식; 증감식){ // 내부 for문
// 실행할 코드
}
}
import java.util.logging.Logger;
// for문
public class ForLoop {
private static final Logger logger = Logger.getLogger(ForLoop.class.getName());
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i;
}
logger.info(String.valueOf(sum));
}
}
import java.util.logging.Logger;
// while문
public class Gugudan {
private static final Logger logger = Logger.getLogger(Gugudan.class.getName());
public static void main(String[] args) {
for (int i = 2; i < 10; i++) {
for (int j = 1; j < 10; j++) {
String result = String.format("%d X %d = %d", i, j, i * j);
logger.info(result);
}
}
}
}
import java.util.logging.Logger;
// 이중 for문
public class Gugudan {
private static final Logger logger = Logger.getLogger(Gugudan.class.getName());
public static void main(String[] args) {
for (int i = 2; i < 10; i++) {
for (int j = 1; j < 10; j++) {
String result = String.format("%d X %d = %d", i, j, i * j);
logger.info(result);
}
}
}
}
배열 선언
: 배열을 선언할 때는 데이터 타입 뒤에 []를 붙입니다
int[] numbers;
배열 생성
: new
키워드를 사용하여 배열을 생성하고 크기를 지정합니다.
numbers = new int[5]; // 5개의 정수를 저장할 배열 생성
배열 요소 할당
: 인덱스를 사용하여 배열 요소에 값을 할당합니다.
numbers[0] = 10;
numbers[1] = 20;
배열 요소 읽기
: 인덱스를 사용하여 배열 요소의 값을 읽습니다.
int x = numbers[0]; // x에는 numbers 배열의 첫 번째 요소인 10이 저장됨
public class ArrayIndex {
public static void main(String[] args) {
int[] scores = {90, 87, 88, 75, 99, 65};
int score1 = scores[0];
System.out.println(score1);
scores[2] = 93;
System.out.println(Arrays.toString(scores));
//Error (out of bounds for length)
//int score6 = scores[6];
//System.out.println(score6);
}
}
배열의 배열로 구성되며, 2차원 배열, 3차원 배열 등 다차원 배열을 생성할 수 있습니다.
각 차원마다 배열을 중첩하여 구현합니다.
2차원 배열 선언
int[][] twoDArray = new int[3][4]; // 3행 4열의 2차원 배열 생성
2차원 배열 초기화
int[][] twoDArray = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
// 3차원도 가능한거 같지만 아직 학습 전
Arrays.copyOf()
int[] sourceArray = {1, 2, 3, 4, 5};
int[] targetArray = Arrays.copyOf(sourceArray, sourceArray.length);
for문을 사용한 수동복사
int[] sourceArray = {1, 2, 3, 4, 5};
int[] targetArray = new int[sourceArray.length];
for (int i = 0; i < sourceArray.length; i++) {
targetArray[i] = sourceArray[i];
}
clone()
int[] sourceArray = {1, 2, 3, 4, 5};
int[] targetArray = sourceArray.clone();
부족한 점 : 반복문을 사용하는 것과 조건문을 적용할 때 조건식의 범위 지정시 순서를 매기는 것을 연습해야할거 같다.
스스로 시도해본 것들 :
과제로 받은 다이아몬드 찍기
public class Diamond {
public static void main(String[] args) {
int size = 5; // 주어진 사이즈는 3,5,10 (다이아몬드의 높이)
// 위쪽 삼각형 부분
for (int i = 1; i <= size; i++) {
// 공백 출력하는 부분
for (int j = size; j > i; j--) {
System.out.print(" ");
}
// * 출력하는 부분
for (int k = 1; k < (i * 2); k++) {
System.out.print("*");
}
// 줄 띄우는 부분
System.out.println();
}
// 아래쪽 삼각형 부분
for (int i = size - 1; i >= 1; i--) {
// 공백 출력하는 부분
for (int j = size; j > i; j--) {
System.out.print(" ");
}
// * 출력하는 부분
for (int k = 1; k < (i * 2); k++) {
System.out.print("*");
}
// 줄 띄우는 부분
System.out.println();
}
}
}
해결 내용 : 주석내용 참고
알게된 점 : for문안에 두 개의 for문을 사용해야 한다는 점을 생각하는 부분에서 고민하는 시간이 길었다. 실무에서는 for문을 어떻게 사용하는지 궁금하다.
헷갈리거나 실수한 점 : 인덱스와 루프 조건을 설정하는것에서 고민하는데 상당 시간을 소비했고, 반복문의 로직을 이해하는데 어려움을 느꼈다.
회고 : 3주 3일차에 Java 기초를 수강했는데 기존에 활용한 Javascript와는 많이 달라
새로운 언어를 배우는 것이 걱정했던것 보다 재밌고 다른 문법들을 적용하는것도 흥미로웠다.