JAVA Study) Day3.

1. 만약

1-1) if 문

if(조건식) {
조건식의 결과 정말if 실행될 문장 ;
}
char ch="b";
if (ch >= 'a' && ch <= 'z') {
    System.out.println("해당 문자는 영문 소문자입니다.");
}

1-2) 만일-그렇지 않다면

if(조건식) {
조건식의 결과 정말if 실행될 문장 ;
} 다른 {
조건식의 결과 거짓말하다if 실행될 문장 ;
}
char ch="Z";
if (ch >= 'a' && ch <= 'z') {
    System.out.println("해당 문자는 영문 소문자입니다.");
} else {
    System.out.println("해당 문자는 영문 소문자가 아닙니다.");
}

1-3) if-else if-else

– 그렇지 않으면 재사용 가능

– 마지막 else 블록은 생략 가능

    char ch="p";

    if (ch >= 'a' && ch <= 'z') {
        System.out.println("해당 문자는 영문 소문자입니다.");
    } else if (ch >= 'A' && ch <= 'Z') {
        System.out.println("해당 문자는 영문 대문자입니다.");
    } else {
        System.out.println("해당 문자는 영문자가 아닙니다.");
    }

    int score = 70;

    if (score >= 90) {
        System.out.println("A등급입니다.");
    } else if(score >= 80) {
        System.out.println("B등급입니다.");
    } else if(score >= 70) {
        System.out.println("C등급입니다.");
    }

1-4) 중첩된 if 문

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등급입니다.");
}

2.스위치

2-1) 속성

– 처리할 케이스의 수가 많을 때 유용

– breakl을 쓰지 않으면 switch 문이 끝까지 실행된다.

– Default 문은 생략 가능

– if 문과 달리 참/거짓 조건만 가능합니다. 스위치는 정수 또는 문자열만 될 수 있습니다.

2-2) 실행 흐름

조건식 계산 –

조건식의 결과와 일치하는 case 문으로 이동 –

적절한 case 문의 지침을 실행합니다.

break가 발생하거나 switch 문이 종료되면 전체 switch 문을 종료합니다.

2-3) 제한 사항

– switch 문의 조건식 결과는 정수 또는 문자열이어야 합니다.

-case 문 값은 정수 상수(문자 포함), 문자열, 중복 X

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);

3.용

3-1) For 문

// 초기화 시 변수 2개 사용 가능합니다. 단, 타입이 같아야 한다.
for (int i = 1, j = 10; i <= 10; i++, j--) {
    System.out.println("i는 현재 " + (i) + "입니다.");
    System.out.println("j는 현재 " + (j) + "입니다.");
}
System.out.println();
// 이렇게 변수 2개를 사용하여 조건식을 구성할 수 있습니다.
for (int k = 1, t = 10; k <= 10 && t > 2; k++, t--) {
    System.out.println("k는 현재 " + (k) + "입니다.");
    System.out.println("t는 현재 " + 
}

3-2) 중첩된 For 문

구구단

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));
    }
}

3-3) for문 개선

for (변수 이름 입력: 배열 또는 컬렉션) {
배열이나 컬렉션이 길면 반복해서 실행할 문장.
}
int() arr = new int(){1, 2, 3, 4, 5};

for (int e : arr) {
    System.out.print(e + " ");
}

4. 임의의 정수 생성

Math.random() -> 0.0과 1.0 사이의 임의의 double을 반환합니다.

0.0 <= Math.random() < 1.0

*1에서 5 사이의 임의의 정수 값 받기

0.0 * 5 <= Math.random() * 5 < 1.0 * 5

(int)0.0 <= (int)(Math.random() * 5) < (int)5.0

0 + 1 <= (정수)(Math.random() * 5) + 1 < 5 + 1

1 <= (int)(Math.random() * 5) + 1 < 6


5. while 문

5-1) 중

// 1부터 2 3 4 순서대로 쭉 더해서 100이 초과할때까지
int sum = 0;
int i = 0;

while (sum <= 100) {
    System.out.println("i = " + i);
    System.out.println("sum = " + sum);
    sum += ++i;
}

5-2) do-while 문

int j = 1;

do {
    System.out.println("do / while 문이 " + j + "번째 반복 실행중입니다.");
    j++; // 이 부분을 삭제하면 무한 루프에 빠지게 됨.
} while (j < 20);

System.out.println("do / while 문이 종료된 후 변수 j의 값은 " + j + "입니다.");

6. 일시 중지 및 계속

6-1) break : 자신을 포함한 루프에서 탈출

int sum = 0;
int i = 0;

while (true) {  무한반복
    if(sum > 100)
        break;    //sum이 100이 넘으면 break
    ++i;
    sum += i;  // 1+2+3+4...
}

System.out.println("i = " + i);
System.out.println("sum = " + sum);

6-2) 추가

– 그것을 포함하는 루프의 끝으로 이동

– 다음 반복으로 이동

– 반복 중 특정 조건에서 반복을 건너뛸 때 유용합니다.

for (int i = 0; i <= 10; i++) {
    if (i % 3 == 0)
         continue;      // 3의 배수는 건너뜀 : 3, 6, 9
    System.out.println("i = " + i);
}

6-3 명명된 루프

– 루프의 이름을 지정하여 하나 이상의 루프에서 벗어나십시오.

-> IntelliJ로 전환하여 다양한 변경

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));
    }
}
int i = 2;
allLoop :
while (true) {
    for (int j = 1; j < 10; j++) {
        if (i == 5) {
            break allLoop;
        }
        System.out.println(i + " * " + j + " = " + (i * j));
    }
    i++;
}
        allLoop : for (int i = 2; i < 10; i++) {
            for (int j = 1; j < 10; j++) {
                if (i == 5) {
                    continue allLoop;
                }
                System.out.println(i + " * " + j + " = " + (i * j));
            }
        }

Ch4 컨디셔닝 및 루프 연습

4-1)

4-1-1) 10

4-1-2) !(ch==” && ch==’tab?’) (O) // ch ==’\t’

4-1-3) ch==’x’ || ch==’X’ (O)

4-1-4) ‘0’<=채널 && 채널<='9' (O)

4-1-5) (‘a’<=ch && ch<='z') || ('A'<=ch && ch<='Z') (O)

4-1-6) 년%400 == 0 || (연도%4==0 && 연도%100 !==0) (X) // !==0 아님 !=0

4-1-7) powerOn==거짓 (O)

4-1-8) str==”예” (X) // str.equals(“예”) 또는 “예”.equals(str)

4-2) 1부터 20까지의 정수 중 2 또는 3의 배수가 아닌 수의 합


정답 73개

4-3)1+ (1+2)+ (1+2+3)+……(1+2+3+…+10) ?


220 답변

//해설의 풀이
int sum = 0;
int totalSum = 0;
for(int i=1; i <=10; i++) {
    sum += i;
    totalSum += sum;
}
System.out.println("totalSum="+totalSum);

각 용어에 대해 계속 1씩 증가하고 모두 더하므로 이중 진술 접근 방식도 마찬가지입니다.

계산 과정을 따로 출력할 수 있고, 맞는지 확인하기 쉬울 것 같아서 해봤습니다.

4-4) 1+ (-2) + 3 + (-4)+…. 100 이상을 몇 번 더해야 하는가?


답 = 199

// 해설지 풀이

int sum = 0; // 총합을 저장할 변수
int s = 1; // 값의 부호를 바꿔주는데 사용할 변수
int num = 0;

//조건식의 값이 true 이므로 무한반복문
for(int i=1;true; i++, s=-s) {      //매 반복마다 s의 값은 1, -1, 1, -1...  
	num = s * i;                    // i 와 부호(s)를 곱해서 더할 값을 구한다
	sum += num;

	if(sum >=100) // 총합이 100보다 같거나 크면 반복문을 빠져 나간다
	break;
}
	System.out.println("num="+num);
	System.out.println("sum="+sum);

//혹은 

for(int i=1; sum < 100; i++, s=-s) {
	num = i * s;
	sum += num;
}

4-5) for 문 -> while 문


int i=0;
while( i<=10) {
	int j=0;
	while(j<=i) {
		System.out.print("*");
		j++;
	}
	System.out.println();
	i++;
}

4-6) 두 주사위의 합이 6인 모든 경우의 수를 출력하시오.


4-7) 문자열이 str 12345 이면 1+2+3+4+5 출력

charAt(int i)로


String str = "12345";
int sum = 0;

for(int i=0; i < str.length(); i++) {
	sum += str.charAt(i) - '0';
}

System.out.println("sum="+sum);

4-8) Math.random()을 사용하여 1에서 6 사이의 임의의 정수를 변수 값에 저장하는 코드.


int value = (int)(Math.random()*6)+1 , 괄호를 빼도 상관없다

4-9) int형 변수 num. 각 자릿수의 합을 더한 결과 반환(문자열이 아닌 숫자만 처리)


숫자 = 숫자/10 == 숫자 /= 10

//해설 풀이
int num = 12345;
int sum = 0;

while(num > 0) {
	sum += num%10;
	num /= 10;
}
System.out.println("sum="+sum);

4-10) 1부터 100까지의 숫자를 맞춰보세요. 값을 입력하면 올라가거나 내려가고 일치하면 끝납니다.



마치 수학 문제를 푸는 기분이다.

내용도 많고 문제도 많습니다.

시간이 오래 걸렸습니다.

확실히 조금 나아진 느낌