1. 만약
1-1) if 문
char ch="b";
if (ch >= 'a' && ch <= 'z') {
System.out.println("해당 문자는 영문 소문자입니다.");
}
1-2) 만일-그렇지 않다면
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문 개선
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의 배수가 아닌 수의 합
4-3)1+ (1+2)+ (1+2+3)+……(1+2+3+…+10) ?
//해설의 풀이
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 이상을 몇 번 더해야 하는가?
// 해설지 풀이
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 사이의 임의의 정수를 변수 값에 저장하는 코드.
4-9) int형 변수 num. 각 자릿수의 합을 더한 결과 반환(문자열이 아닌 숫자만 처리)
//해설 풀이
int num = 12345;
int sum = 0;
while(num > 0) {
sum += num%10;
num /= 10;
}
System.out.println("sum="+sum);
4-10) 1부터 100까지의 숫자를 맞춰보세요. 값을 입력하면 올라가거나 내려가고 일치하면 끝납니다.
마치 수학 문제를 푸는 기분이다.
내용도 많고 문제도 많습니다.
시간이 오래 걸렸습니다.
확실히 조금 나아진 느낌