제어문은 크게 다른 바 없으니 몰랐던 부분만 작성한다.
ArrayList<String> pocket = new ArrayList<String>;
pocket.add("paper");
pocket.add("handphone");
pocket.add("money");
if (pocket.contains("money")) {
System.out.println("택시 탈 수 있음");
}else {
System.out.println("걸어가셈");
}
리스트의 contains를 통해서도 조건문 사용 가능 --> return값이 true/false이기 때문
스위치 케이스 구문은 잘 사용하지 않을 것으로 생각하지만 오랜만에 복습하는 기분으로
public class Sample {
public static void main(String[] args) {
int month = 8;
String monthString = "";
switch (month) { // 입력 변수의 자료형은 byte, short, char, int, enum, String만 가능하다.
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;
default: monthString = "Invalid month";
break;
}
System.out.println(monthString);
}
}
무조건 해당 케이스만 적용하려면 break; 필수!
입력값이 정형화된 경우에 switch문 사용하면 가독성이 올라간다.
int treeHit = 0;
while (treeHit < 10) {
treeHit++; // treeHit += 1 로도 표현 가능
System.out.println("나무를 " + treeHit + "번 찍었습니다.");
if (treeHit == 10) {
System.out.println("나무 넘어갑니다.");
}
}
무한 루프에 걸리지 않게 조심하자
while (true) {
System.out.println("Ctrl-C를 눌러야 while문을 빠져 나갈 수 있습니다.");
}
무한 루프를 빠져나가려면 조건문을 걸고, break;를 입력해준다.
int a = 0;
while (a < 10) {
a++;
if (a % 2 == 0) {
continue; // 짝수인 경우 조건문으로 돌아간다.
}
System.out.println(a); // 홀수만 출력된다.
}
int a = 0;
while (a < 10) {
a++;
if (a % 2 == 0) {
continue; // 짝수인 경우 조건문으로 돌아간다.
}
System.out.println(a); // 홀수만 출력된다.
}
아마 자바도 동일하게 스파게티 코드가 되지 않게,
가독성을 위해 continue문을 조심해서 써야될 것.
int[] marks = {90, 25, 67, 45, 80};
for(int i=0; i<marks.length; i++) {
if (marks[i] >= 60) {
System.out.println((i+1)+"번 학생은 합격입니다.");
}else {
System.out.println((i+1)+"번 학생은 불합격입니다.");
}
}
for문은 익숙하니 넘어가자
for문에서도 바로 조건문으로 돌아가려면 continue;를 사용한다.
int[] marks = {90, 25, 67, 45, 80};
for(int i=0; i<marks.length; i++) {
if (marks[i] < 60) {
continue; // 조건문으로 돌아간다.
// break; //break를 쓰면 그냥 for문 탈출!
}
System.out.println((i+1)+"번 학생 축하합니다. 합격입니다.");
}
굳이 조건문에서 continue를 쓰는 경우가 많이 있을까 싶지만, 우선은 알아두자.
for(int i=2; i<10; i++) {
for(int j=1; j<10; j++) {
System.out.print(i*j+" ");
}
System.out.println(""); // 줄을 바꾸어 출력하는 역할을 한다.
}
이건 그냥 머리를 잘 굴리면 된다! !
내부에 있는 for문 먼저 돌아가고, 조건 넘어가면 다시 밖에 있는거 시작하고
내부에 있는 for문 다시 돌아간다.(int j=0과 같은 선언부는 돌아갈때마다 다시 선언됨 why? 지역 선언(? 전역이 아닌걸 뭐라하는지 까먹었다.)이기 때문에!
드디어 자꾸 새롭게 보이던 향상된 for문, for each문의 등장이다.
예시부터 보자.
String[] numbers = {"one", "two", "three"};
for(String number: numbers) {
System.out.println(number);
}
배열을 선언하고, 배열 속에 있는 값을 명칭할 임의의 변수(number)의 타입과 변수명을 설정한 뒤 :뒤에 배열 이름을 넣어준다.
for (type 변수명: iterate) {
body-of-loop
}
구조를 보면 이런 식이라고한다.
import java.util.ArrayList;
import java.util.Arrays;
public class Sample {
public static void main(String[] args) {
ArrayList<String> numbers = new ArrayList<>(Arrays.asList("one", "two", "three"));
for (String number : numbers) {
System.out.println(number);
}
}
}
ArrayList로 구현하면 이런 식.
예시에서는 Arrays.asList로 임의의 값을 넣어주었지만, 실제로 사용할 때는 값을 받아오면 이를 어레이리스트 형태로 만들어주고 for문을 돌리면 되겠다.
그래도 그동안 전공으로 공부하고 사용했던 내용이 있어 새로운 언어를 공부하고, 복습할 때 많은 도움이 되기는 하나보다.. 처음 입학해서 조건문/반복문 등에서 가장 많은 시간을 보냈던 것 같은데 어느정도 한눈에 들어오니 다행이다. . 놀기만 하진 않았구나