조건문에는 크게 if문과 swich문이 있다.
class Control1_4 {
public static void main(String[] args) {
int score = 87;
if (score >= 90) {
if(score >= 95){
System.out.println("A++등급입니다.");
}else {
System.out.println("A등급입니다.");
}
} else if(score >= 80) {
if(score >= 85){
System.out.println("B++등급입니다.");
}else {
System.out.println("B등급입니다.");
}
} else if(score >= 70) {
if(score >= 75){
System.out.println("C++등급입니다.");
}else {
System.out.println("C등급입니다.");
}
}else {
System.out.println("D등급입니다.");
}
}
}
! 질문 : if문과 switch문의 차이가 뭔가요?
답변 : if문의 실행 조건은 boolean, 즉 true인지 false인지에 따른 것이고, switch의 실행 조건은 값(정수 or 문자열)의 비교 결과입니다.
switch문 예시 : 숫자에 따라 month를 반환하는 switch문
class Control2_1 {
public static void main(String[] args) {
int month = 8;
String monthString = "";
switch (month) {
case 1: monthString = "January";
break;
case 2: monthString = "February";
break;
case 3: monthString = "March";
break;
case 4: monthString = "April";
break;
case 5: monthString = "May";
break;
case 6: monthString = "June";
break;
case 7: monthString = "July";
break;
case 8: monthString = "August";
break;
case 9: monthString = "September";
break;
case 10: monthString = "October";
break;
case 11: monthString = "November";
break;
case 12: monthString = "December";
break;
case 0: case 13:
System.out.println("이런식으로 case 문을 사용할 수 있습니다.");
break;
case 15:
default: monthString = "Invalid month";
}
System.out.println(monthString);
}
}
반복문에는 대표적으로 for문과 while문이 있다.
class Control3_4_1 {
public static void main(String[] args) {
for (int i = 2; i < 10; i++) {
System.out.println(i + "단 시작합니다.");
for (int j = 1; j < 10; j++) {
System.out.println("j는 현재 " + (j) + "입니다.");
System.out.println(i + "*" + j + "=" + (i * j));
}
}
}
}
class Control3_4_2 {
public static void main(String[] args) {
for (int i = 0; ; i++) {
System.out.println("현재 반복이" + i + " 회 진행중입니다.");
if(i == 10){
break;
}
}
}
}
class Control3_5 {
public static void main(String[] args) {
int[] arr = new int[]{1, 2, 3, 4, 5};
for (int e : arr) {
System.out.print(e + " ");
}
}
}
위 예시에서는 int타입의 변수 e를 사용했지만, 만약 arr배열의 타입이 int[]가 아니라 char[]과 같이 다른 타입이었다면 e의 타입을 일치시켜주어야 한다.
! 질문 : 배열이 뭔가요?
class Control5_2 {
public static void main(String[] args) {
int sum = 0;
int i = 0;
while (sum <= 100) {
System.out.println("i = " + i);
System.out.println("sum = " + sum);
sum += ++i;
}
}
}
class Control5_3 {
public static void main(String[] args) {
int j = 1;
do {
System.out.println("do / while 문이 " + j + "번째 반복 실행중입니다.");
j++; // 이 부분을 삭제하면 무한 루프에 빠지게 됨.
} while (j < 20);
System.out.println("do / while 문이 종료된 후 변수 j의 값은 " + j + "입니다.");
}
}
앞서 for문과 while문을 중첩으로 사용했을 때, break 혹은 continue를 쓰면 해당 코드 블럭 하나만을 탈출하게 된다. 만약 둘 이상 중첩된 반복문을 한 번에 탈출하고 싶다면, 반복문에 이름을 붙여 한 번에 여러 반복문을 탈출할 수 있다.
class Control6_3 {
public static void main(String[] args) {
allLoop :
for (int i = 2; i < 10; i++) {
for (int j = 1; j < 10; j++) {
if (i == 5) {
break allLoop;
}
System.out.println(i + " * " + j + " = " + (i * j));
}
}
}
}
배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것이다.
방법 1 : 자료형[ ] 변수명 = new 자료형[배열의 길이];
방법 2 : 자료형[ ] 변수명 = new 자료형[ ] {value1, value2, value3 ...}
방법 3 : 자료형[ ] 변수명 = {value1, value2, value3 ...}
방법 2와 방법 3의 경우 값을 직접 집어넣는 방식이기 때문에 선언과 동시에 값이 고정된다. 하지만 값이 선언과 동시에 정해지는 것이 아니라 추후에 값이 대입되는 경우도 있기 때문에 방법 1과 같이 선언한 이후에 일련의 처리 과정을 거친 값들을 집어넣을 수도 있다.
class Arrays1_1 {
public static void main(String[] args) {
// int[] age; // 참조변수 베열 age 생성
// age = new int[5]; // 배열의 생성
int[] age = new int[5]; // 선언과 생성 동시에
age[3] = 28;
System.out.println("age[3] = " + age[3]);
int beatitudoAge = age[3];
System.out.println("beatitudoAge = " + beatitudoAge);
}
}
배열의 변수명을 출력해 보면, 해당 배열 전체가 출력되는 것이 아니라 배열이 저장된 주소가 출력된다. 배열에 접근하기 위해서는 배열의 몇 번째 원소에 접근할 지에 대한 index가 필요하다.
class Arrays1_1 {
public static void main(String[] args) {
int[] numberArray = new int[10];
System.out.println(numberArray); // 배열의 주소가 출력됨
System.out.println(numberArray[0]); // 배열의 0번째 원소가 출력됨
System.out.println(numberArray[1]); // 배열의 1번째 원소가 출력됨
.
.
.
System.out.println(numberArray[9]); // 배열의 10번째 원소가 출력됨
}
}
위에서 분명 배열의 크기를 10으로 지정했는데, 마지막 index가 9다. 이는 배열의 시작 index가 1이 아니라 0이기 때문이다. 배열의 크기가 10이라면 index는 0부터 9까지가 생성된다.
! 질문 : 배열 하나 하나를 확인하는 건 index를 통해 할 수 있는데, 배열 전체를 확인하는 건 그럼 어떻게 할 수 있나요?
방법 1 : 반복문을 통해 하나하나 모두 출력
int[] numberArray = {1,2,3,4,5};
for (int i = 0; i < numberArray.length; i++){
System.out.println(numberArray[i]);
}
방법 2 : Arrays.toString을 이용한 방법
int[] numberArray = {1,2,3,4,5};
System.out.println(Arrays.toString(numberArray));