- 숙제
문제)변수 a가 3의 배수이면 , 3의배수 , 5의 배수이면 5의배수 , 3,5둘다의 배수이면 둘다
Scanner sc = new Scanner(System.in); // Scanner sc 여기서 sc는 마음대로 변경 가능
>사용자가 작성을 해야하기 때문에 Scanner를 이용 사용하기 편하게 sc로 선언하였음
System.out.print("숫자를 입력해 주세요>");
int a = sc.nextInt(); // 여기서 sc.nextInt는 숫자 sc.next는 문자를 받음
>print로 사용자가 숫자를 어디에 입력해야할지 제시함
>sc.nextInt로 사용자가 작성한 수를 가져와 변수 int에 대입함
if(a == 0) {
System.out.println("0입니다");
}else if(a%3 == 0 && a%5 == 0) {
System.out.println("둘다");
}else if(a%5 == 0) {
System.out.println("5의 배수입니다");
}else if(a%3 == 0) {
System.out.println("3의 배수입니다");
}else {
System.out.println("해당사항 없음");
}
풀이)
>이제 if문을 이용하여 변수 이름을 넣어 식을 만듬
>입력숫자가 0일경우 따로 출력을 하기위해 0의 조건을 가장 위에 설정함
>if문에서 숫자 0을 거르기 위해서는 가장 위에 조건식을 만들어야함 !
>이어 else if에 조건을 넣어 3,5의 배수일 경우 "둘다"라는 문장이 출력되게 설정함
>이경우 당연히 2가지 조건이 다 충족되어야 실행해야 하기 때문에 &&로 식을 연결함
>이제 3or5의 배수입니다만 출력하면 되기에 else if로 따로 조건식을 설정했음
>이외에 해당하지 않는 숫자는 따로 조건을 설정할 필요가 없기에 else에 실행문을 추가했음
//if(a == 0 ||(a%3 !== 0 && a%5 !== 5)) if를 이렇게 바꾸면 하나에 둘다 설정 가능
- 조건문_switch_case
>switch 와 case는 변수에 수를 넣어보면 알아봤습니다
>아래는 suitch의 기본적인 수식입니다
int a = 5;
switch (a) {
case 1:
System.out.println("1입니다");
break;
case 2:
System.out.println("2입니다");
break;
case 3:
System.out.println("3입니다");
break;
default:
System.out.println("1~3까지 입력해주세요");
}
}
풀이)먼저 변수 int를 a로 선언하고 아무 숫자나 넣어두고
switch()에 변수a를 넣었습니다
첫번째 case에는 1이라고 선언하고 실행문은 "1입니다"를 프린팅하는 명령어를 넣었습니다
이후 실행문이 실행되면 break; 를 이용해 실행문을 빠져나오게 만들었습니다
실행을 해보면 변수 a 에 1을 대입하면 switch안의 a또한 1이 대입되며
이름이 1인 case에 있는 실행문인 "1입니다"가 잘 실행되었습니다
만약 변수 int에 1~3이 아닌 다른 수를 대입하는 경우에는
default:로 넘어가 "1~3까지 입력해주세요"라는 실행문이 실행되게 됩니다
>>switch는 if와 기능이 비슷하지만 범위를 설정할 수 없다<<
}
>>String aa = "1";
>>String타입은 문자열이기 때문에 cass에 잡을때도 ""를 붙여줘야 한다
- switch_case_응용
switch_case_응용 1
switch 와case를 이용하여 간단한 월 계산기를 사용
Scanner sc = new Scanner(System.in);
System.out.print("번역할 달을 입력해주세요>");
String a = sc.next();
switch (a) {
case "1월":
System.out.println("January");
break;
case "2월":
System.out.println("February");
break;
case "3월":
System.out.println("Narch");
break;
default:
System.out.println("1~3월까지만 가능합니다");
}
풀이)먼저 사용자가 입력이 가능해야하기에 Scanner를 사용하여 입력할 수 있게함
편의를 위해 Scanner는 sc로 선언하였습니다
사용자가 입력창을 쉽게 알아 볼 수 있게 "번역할 달을 입력해주세요 >"를 콘솔에 프린팅함
String이라는 변수를 a로 선언하고 sc.next();로 Scanner에 입력한 정보를 a에 대입함
이렇게 준비한 변수를 switch에 넣고 각 case의 이름을 설정 본문에는 "1월","2월","3월"
로 설정하였습니다 이제 사용자가 콘솔에 원하는 달을 작성해 넣을 시
사용자의 작성 정보를 변수에 대입하여
위에서 아래로 내려오며 case에 선언한 이름과 대조하여 맞는 경우
안에 담긴 달의 영어를 콘솔에 출력합니다
이후 break;로 실행문에서 빠져 나가기 때문에 아래에서 조건이 겹치더라도
위에있는 실행문만 출력됩니다
1년은 12개월이기에 12월 이상이 넘어가는 답을 장성 시
default를 이용하여 "1월~12월까지만 가능하다"는 문구가 출력되게 됩니다
* 실제 수업에서는 12월까지 진행했지만 너무 길어 3월로 줄임 *
- switch_case_응용
// 문제)숫자 두개를 입력받고,
// 메뉴에서 하나를 선택하여 결과출력
// 1.더하기 2.빼기 3.곱하기 4.나누기 5.나머지
Scanner sc = new Scanner(System.in);
System.out.print("숫자를 입력해주세요 >");
int a = sc.nextInt();
System.out.print("숫자를 입력해주세요 >");
int b = sc.nextInt();
System.out.println("1.더하기 2.빼기 3.곱하기 4.나누기 5.나머지");
System.out.print("메뉴를 선택해주세요 >");
int c = sc.nextInt();
풀이)Scanner를 설정하여 사용자가 작성이 가능하도록 설정함
>System.out.print 로 사용자가 어디에 작성해야하는지 보기쉽게 알려줌
>int a = sc.nextInt(); 를 이용하여 사용자가 작성한 숫자를 int a 에 대입함
>System.out.print 로 사용자가 어디에 작성해야하는지 보기쉽게 알려줌
>int b = sc.nextInt(); 를 이용하여 사용자가 작성한 숫자를 int b 에 대입함
>System.out.println 로 사용자에게 메뉴를 고를수 있는 메뉴를 보여줌
> int c = sc.nextInt(); 를 이용하여 사용자가 고른 메뉴는 int c 에 저장함
switch (c) {
case 1:
System.out.println("답은:" + a + "+"+ b +"="+ (a+b));
// System.out.printf("%d + %d %d\n", a , b ,(a+b));
// a,b,(a+b)를 순서대로 대입 %d < %는문자 d는 숫자를 뜻함 \n는 줄바꿈을 뜻함
break;
case 2:
System.out.println("답은:" + a + "-"+ b +"="+ (a-b));
>문자와 변수 사이에 +는 연결을 의미하기 때문에 계산식은 따로 묶어준다
break;
case 3:
System.out.println("답은:" + a + "*"+ b +"="+ (a*b));
break;
case 4:
System.out.println("답은:" + a + "/"+ b +"="+ (a/b));
break;
case 5:
System.out.println("답은:" + a + "%"+ b +"="+ (a%b));
break;
default:
System.out.println("메뉴 1~5번만 선택 가능합니다");
break;
}
풀이) 위에서는 각각 a,b,c에 사용자가 원하는 수를 대입하였음
>이를 이용해 사용자가 원하는 계산식과 결과를 출력함
>먼저 사용가 원하는 메뉴가 무엇인지에 따라 계산식과 결과값이 달라지기 때문에
>swith 에는 메뉴가 담긴 변수 c를 넣었음
>각각의 case에는 메뉴 번호를 넣어 메뉴에 따라 계산식과 결과 값이 출력되게 함
>5가지의 메뉴 이외에 다른 수를 입력할 경우 default 를 이용하여
>지정 메뉴만 선택 가능하다는 텍스트를 프린트하게 만들었음
}
- 반복문_for
package day2;
public class 반복문_for { public static void main(String[] args) {
// TODO Auto-generated method stub
>for문의 구조식과 실행 순서는 다음과 같다
for(/*1번*/int i = 0 ;/*2번*/ i < 5 ;/*4번*/ i++) { >i++는 i=i+1의 약자
/*3번*/System.out.println(i);
}
System.out.println("RIP");
풀이)1번부터 변수 int 를 i로 선언하고 0을 대입
>2번 i로 선언한 변수가 5보다 작다면
>3번 i를 콘솔에 출력한다
>4번 i에 1을 더하고 다시 1번부터 반복한다
>이후 i가 5보다 커지는 경우 빠져나와 "RIP"를 출력한다
for(int i = 1 ; i <= 10 ; i++) {
System.out.println(i);
}
>1부터 10까지 출력하는 for문의 구조식
>응용 예시문
for(int i = 1 ; i <= 10 ; i = i+2) {
System.out.println(i);
}
풀이) 변수를 i로 선언하고 1을 대입
>i가 10보다 작거나 같다면
>i를 출력
>이후 i에 2를 더해 10보다 작거나 같다면 반복, 커진다면 반복을 멈춤
>처음부터 변수 i에 1이 들어 있었기 때문에 +2를 진행하면 계속 홀수가 나옴
>이렇게 for문을 이용해 1~10까지 홀수만 출력하는 식을 배움
for(int i = 2 ; i <= 10 ; i= i+2) {
System.out.println(i);
}
풀이)이번에는 변수 i에 2를 대입
>i가 10보다 작거나 같다면
>i를 출력함
>이후 i에 +2를 하고 10보다 작거나 같다면 반복, 커진다면 멈춤
>변수 i에 2가 들어 있었기 떄문에 +2를 하게되면 계속 짝수가 나옴
>for문을 이용해 1~10까지 짝수만 출력하는 식을 배움
}
}
- 반복문_for예제
package day2;
public class 반복문_for예제
{ public static void main(String[] args) {
// TODO Auto-generated method stub
>참고만 하자 println에서 ln은 줄바꿈을 의미 print만 작성하면 가로 출력가능
// 문제) 1~10까지 가로 출력
// for(int i = 1 ; i <= 10 ; i++) {
// System.out.print(i+"\t");
// \t (이스케이프 문자)는 탭을 뜻함 \n는 줄바꿈
// }
// System.out.println("\n안\t녕");
//1~100까지의 합을 for문으로 구하자
// int sum = 0;
// for(int i = 0 ; i <= 100 ; i = i++) {
// sum = sum + i;
// }
// System.out.println(sum);
풀이)처음에 이해가 잘 안됨
>for문 안의 변수 i에 0을 대입
>i가 100보다 작거나 같다면
>따로 sum이라고 선언한 변수에 i를 더함
>이후 i에 1을 더하고 sum에 더하기를 100까지 반복
>실행문 밖에서 sum을 출력하여 1~100까지의 합을 구했음
>0인 sum에 0 + 1 +2 + 3 + 4 + 5 .... + 100 이렇게 더함
>이렇게 다 더해진 sum을 출력
//1~100까지의 짝수의 합을 for문으로 구하자
// int sum = 0;
// for(int i = 0 ; i <= 100 ; i = i+2) {
// sum = sum + i;
// }
// System.out.println(sum);
풀이)처음 1부터 10까지의 짝수를 구하는 for문의 응용
>간단한 수학 문제와 같음 2의 배수는 짝수
>위에 1~100의 합을 구하기 위해서 i에 +1을 했다면
>이번에는 i에 +2를 진행함 i는 애초에 0을 대입하였기에
>i가 100보다 작거나 같을때까지 2씩 늘어나며 찍수만 sum에 더해짐
>이후 다 더해진 변수 sum을 출력함
>1~100까지의 홀수의 합만 구하고 싶다면
for문 안의 변수 i에 1을 대입하고 반복마다 2를 더해주면됨
//6 * 1 = 6 이렇게 9까지 만들기
int dan = 6;
for(int i = 1 ; i <= 9 ; i++) {
System.out.println(dan + "*" + i + "=" + (dan*i));
}
>이번 문제는 99단중 6단을 출력하는 for문의 식입니다
>6단에서 6은 변하지 않기에 밖에 변수 dan으로 6을 대입하였습니다
>for문안의 변수는 i로 선언
>i가 9보다 작거나 같다면 실행문을 출력합니다
>이후 i에 1을 더하여 반복합니다
>실행문은 System.out.println(dan + "*" + i + "=" + (dan*i)); 으로
>dan은 처음 6을 대입한 이후 변한게 없기에 6 고정
>변수 i는 for문 안에서 1~9까지 1씩 증가합니다
>숫자 + 문자는 합이 아닌 나열이기 때문에 ()를 이용하여 계산식은 따로 설정하였습니다
>dan은 고정이고 i는 1씩 증가하기 때문에 곱하여 6*1 ,6*2 .... 6*9까지 계산됩니다
>pruntln을 이용하여 안에서 출력문을 실행하기에 세로로 6단이 출력됩니다
}
}
- 반복문_while
package day2; import java.util.Scanner;
import javax.swing.plaf.synth.SynthScrollBarUI;
public class 반복문_while
{ public static void main(String[] args) {
// TODO Auto-generated method stub
> while은 조건이 참이면 무한 반복 그렇기에 따로 조건을 설정해줘야함 <
int a = 5;
while(a <= 10) {
System.out.println("안녕");
a++;
}
풀이)whuile은 조건이 참이라면 무한히 반복합니다
>위의 식은 변수 a 에 5를 대입하였고
>while문안에 a가 10보다 작거나 같다면
>"안녕"을 출력하게 만들었습니다
>이렇게 출력을 진행하면 참이기 때문에 무한히 실행됩니다
>그렇기에 a++;라는 조건을 설정하여 변수 a 가 1씩 증가하여
>변수 a가 10이상이 될 수 있는 조건을 설정한 예시 입니다
문제>while을 이용해 1~10000까지 합한 값을 구하자<
int b = 0;
int a = 1;
while(a <= 10000) {
b = b+a;
a++;
}
System.out.println(b);
풀이)위에서 아래로 보면 편합니다
>변수 b,a에 각 0 , 1을 대입했습니다
>while문안에 a가 10000보다 작거나 같으면
>b = b+a로 변수 b와 변수 a를 합하여 대입하게 만들었습니다
>이렇게만 두고 실행하게 된다면 1이 무한으로 b에 더해지기 때문에
>조건 a++;을 이용하여 변수 a가 한번의 반복마다 1씩 증가하게 조건을 추가했습니다
>이후 변수 a 가 10000과 같아진다면 실행문을 빠져나와 b를 출력합니다
문제) 숫자를 계속 입력 받다가 0이 입력되면 반복문 종료
Scanner sc = new Scanner(System.in);
int a = 1;
while (a >= 1 || a <= -1) {
System.out.print("숫자입력 >");
a = sc.nextInt();
}
System.out.println("0입니다");
!!2일차 수업과정중 가장 이해하기 어려웠습니다!!
풀이)이 문제는 콘솔에 어떠한 숫자를 입력해도 상관없지만 0을 입력시 "0입니다"를 출력해 줘야 합니다
>먼저 변수 a에 1을 대입했습니다
>while문에 a가 1이상이면 혹은 a가 -1 이하면 이라고 설정했습니다
>실행문에 숫자를 입력하는 보기 쉽게 설정하고
>sc.nextInt();를 이용해 작성한 숫자를 가져와 a에 대입하게 하였습니다
>이렇게하면 0을 제외하면 모두 참이기 때문에 while문을 빠져나오지 못하고 무한히 반복합니다
>0을 입력하면 거짓이므로 while 문을 빠져나와 "0입니다"가 출력되게 하였습니다
문제) 선생님 풀이 boolean에 참을 대입하여 무한히 반복시키고 실행문에 변수 num과 if문을 사용해
만약 num에 0이 들어가면 boolean에 거짓을 대입하고 "0입니다"를 출력하게함
Scanner sc = new Scanner(System.in);
boolean check = true;
while(check) {
System.out.println("숫자입력 >");
int num = sc.nextInt();
if(num == 0) {
check = false;
System.out.println("0입니다");
}
}
// 문제)숫자를 계속 입력받으면서 3의 배수 , 5의 배수 , 3과 5의 배수를 출력하는데
// 0 이 입력되면 반복문을 끝낸다.
Scanner sc = new Scanner(System.in);
boolean b = true;
int a = 1;
while (b) {
System.out.print("숫자입력>");
a = sc.nextInt();
if (a == 0) {
b = false;
System.out.println("0입니다");
} else if (a % 3 == 0 && a % 5 == 0) {
System.out.println("3과 5의 배수입니다");
} else if (a % 3 == 0) {
System.out.println("3의 배수입ㄴ다");
} else if (a % 5 == 0) {
System.out.println("5의 배수입니다");
} else {
System.out.println("둘다 아님");
}
풀이)선생님 풀이의 응용입니다
>변수 a에 sc.nextInt();를 이용하여 사용자가 작성한 숫자를 대입하게 합니다
>boolean에 참을 대입하고 while에 넣어 무한히 반복하게 합니다
>이후 if문으로 a 가 0과 같다면 boolean에 거짓을 대입하고 "0입니다"를 출력합니다
>이후 else if와 else를 이용하여 조건을 걸어 실행시켰습니다
}
}
}
- 반복문_break_continue
package day2;
public class 반복문_break_continue {
public static void main(String[] args) {
// TODO Auto-generated method stub
!!break와 continue는 이문제만 풀이를 진행하겠습니다!!
for (int j = 2; j < 10; j++) {
if (j < 4) {
continue;
} else if (j == 8) {
break;
}
System.out.println(j + "단");
for (int i = 1; i < 10; i++) {
System.out.printf("%d * %d = %d\n", j, i, (j * i));
}
System.out.println();
}
풀이)for문 변수 j에 2를 대입하고 j가 10보다 작으면 반복하며 j에 1씩 더합니다
>만약 j가 4보다 작으면 continue;를 이용하여 for문의 2번 j < 10으로 다시 돌립니다
>그렇게 1씩 증가해 4이상이 되면 내려가 else if 를만나 j가 8이되면 반복문을 빠져나갑니다
>이렇게 5단부터 7단까지 System.out.printf("%d * %d = %d\n", j, i, (j * i)); 를 이용해
>콘솔에 출력됩니다
// for(int i = 1 ; i <= 10 ; i++) {
// System.out.println(i);
// if(i == 5) {
// break;
// }
// }
// System.out.println("끝");
// int dan = 3;
// for (int ban = 2; ban < 10; ban++) {
// System.out.printf(ban + "단" + "\t" + "\t");
// }
// System.out.println();
// for (int j = 1; j < 10; j++) {
// for (int i = 2; i < 10; i++) {
// System.out.printf("%d * %d = %d\t", i, j, (j * i));
// if(i==5) {
// break;
// }
// }
// System.out.printf("\n");
// }
// for (int i = 1; i <= 10; i++) {
// if (i == 5) {
// continue;
// }
// System.out.println(i);
// }
}
}
'나의 수업일지' 카테고리의 다른 글
인천 일보 아카데미 4일차 up&down게임_만들기 / 숫자 랜덤 출력 (0) | 2023.02.24 |
---|---|
인천 일보 아카데미 3일차 배운 변수와 문법을 사용하여 만들어보기 (0) | 2023.02.23 |
인천일보 아카데미 1일차 (오후) 조건문 if 와 Scanner (1) | 2023.02.21 |
인천일보 아카데미 수업 1일차 (오전) 변수 타입 _ 강제 형변환 (0) | 2023.02.21 |
안녕하세요 (0) | 2023.02.05 |
- 숙제
문제)변수 a가 3의 배수이면 , 3의배수 , 5의 배수이면 5의배수 , 3,5둘다의 배수이면 둘다
Scanner sc = new Scanner(System.in); // Scanner sc 여기서 sc는 마음대로 변경 가능
>사용자가 작성을 해야하기 때문에 Scanner를 이용 사용하기 편하게 sc로 선언하였음
System.out.print("숫자를 입력해 주세요>");
int a = sc.nextInt(); // 여기서 sc.nextInt는 숫자 sc.next는 문자를 받음
>print로 사용자가 숫자를 어디에 입력해야할지 제시함
>sc.nextInt로 사용자가 작성한 수를 가져와 변수 int에 대입함
if(a == 0) {
System.out.println("0입니다");
}else if(a%3 == 0 && a%5 == 0) {
System.out.println("둘다");
}else if(a%5 == 0) {
System.out.println("5의 배수입니다");
}else if(a%3 == 0) {
System.out.println("3의 배수입니다");
}else {
System.out.println("해당사항 없음");
}
풀이)
>이제 if문을 이용하여 변수 이름을 넣어 식을 만듬
>입력숫자가 0일경우 따로 출력을 하기위해 0의 조건을 가장 위에 설정함
>if문에서 숫자 0을 거르기 위해서는 가장 위에 조건식을 만들어야함 !
>이어 else if에 조건을 넣어 3,5의 배수일 경우 "둘다"라는 문장이 출력되게 설정함
>이경우 당연히 2가지 조건이 다 충족되어야 실행해야 하기 때문에 &&로 식을 연결함
>이제 3or5의 배수입니다만 출력하면 되기에 else if로 따로 조건식을 설정했음
>이외에 해당하지 않는 숫자는 따로 조건을 설정할 필요가 없기에 else에 실행문을 추가했음
//if(a == 0 ||(a%3 !== 0 && a%5 !== 5)) if를 이렇게 바꾸면 하나에 둘다 설정 가능
- 조건문_switch_case
>switch 와 case는 변수에 수를 넣어보면 알아봤습니다
>아래는 suitch의 기본적인 수식입니다
int a = 5;
switch (a) {
case 1:
System.out.println("1입니다");
break;
case 2:
System.out.println("2입니다");
break;
case 3:
System.out.println("3입니다");
break;
default:
System.out.println("1~3까지 입력해주세요");
}
}
풀이)먼저 변수 int를 a로 선언하고 아무 숫자나 넣어두고
switch()에 변수a를 넣었습니다
첫번째 case에는 1이라고 선언하고 실행문은 "1입니다"를 프린팅하는 명령어를 넣었습니다
이후 실행문이 실행되면 break; 를 이용해 실행문을 빠져나오게 만들었습니다
실행을 해보면 변수 a 에 1을 대입하면 switch안의 a또한 1이 대입되며
이름이 1인 case에 있는 실행문인 "1입니다"가 잘 실행되었습니다
만약 변수 int에 1~3이 아닌 다른 수를 대입하는 경우에는
default:로 넘어가 "1~3까지 입력해주세요"라는 실행문이 실행되게 됩니다
>>switch는 if와 기능이 비슷하지만 범위를 설정할 수 없다<<
}
>>String aa = "1";
>>String타입은 문자열이기 때문에 cass에 잡을때도 ""를 붙여줘야 한다
- switch_case_응용
switch_case_응용 1
switch 와case를 이용하여 간단한 월 계산기를 사용
Scanner sc = new Scanner(System.in);
System.out.print("번역할 달을 입력해주세요>");
String a = sc.next();
switch (a) {
case "1월":
System.out.println("January");
break;
case "2월":
System.out.println("February");
break;
case "3월":
System.out.println("Narch");
break;
default:
System.out.println("1~3월까지만 가능합니다");
}
풀이)먼저 사용자가 입력이 가능해야하기에 Scanner를 사용하여 입력할 수 있게함
편의를 위해 Scanner는 sc로 선언하였습니다
사용자가 입력창을 쉽게 알아 볼 수 있게 "번역할 달을 입력해주세요 >"를 콘솔에 프린팅함
String이라는 변수를 a로 선언하고 sc.next();로 Scanner에 입력한 정보를 a에 대입함
이렇게 준비한 변수를 switch에 넣고 각 case의 이름을 설정 본문에는 "1월","2월","3월"
로 설정하였습니다 이제 사용자가 콘솔에 원하는 달을 작성해 넣을 시
사용자의 작성 정보를 변수에 대입하여
위에서 아래로 내려오며 case에 선언한 이름과 대조하여 맞는 경우
안에 담긴 달의 영어를 콘솔에 출력합니다
이후 break;로 실행문에서 빠져 나가기 때문에 아래에서 조건이 겹치더라도
위에있는 실행문만 출력됩니다
1년은 12개월이기에 12월 이상이 넘어가는 답을 장성 시
default를 이용하여 "1월~12월까지만 가능하다"는 문구가 출력되게 됩니다
* 실제 수업에서는 12월까지 진행했지만 너무 길어 3월로 줄임 *
- switch_case_응용
// 문제)숫자 두개를 입력받고,
// 메뉴에서 하나를 선택하여 결과출력
// 1.더하기 2.빼기 3.곱하기 4.나누기 5.나머지
Scanner sc = new Scanner(System.in);
System.out.print("숫자를 입력해주세요 >");
int a = sc.nextInt();
System.out.print("숫자를 입력해주세요 >");
int b = sc.nextInt();
System.out.println("1.더하기 2.빼기 3.곱하기 4.나누기 5.나머지");
System.out.print("메뉴를 선택해주세요 >");
int c = sc.nextInt();
풀이)Scanner를 설정하여 사용자가 작성이 가능하도록 설정함
>System.out.print 로 사용자가 어디에 작성해야하는지 보기쉽게 알려줌
>int a = sc.nextInt(); 를 이용하여 사용자가 작성한 숫자를 int a 에 대입함
>System.out.print 로 사용자가 어디에 작성해야하는지 보기쉽게 알려줌
>int b = sc.nextInt(); 를 이용하여 사용자가 작성한 숫자를 int b 에 대입함
>System.out.println 로 사용자에게 메뉴를 고를수 있는 메뉴를 보여줌
> int c = sc.nextInt(); 를 이용하여 사용자가 고른 메뉴는 int c 에 저장함
switch (c) {
case 1:
System.out.println("답은:" + a + "+"+ b +"="+ (a+b));
// System.out.printf("%d + %d %d\n", a , b ,(a+b));
// a,b,(a+b)를 순서대로 대입 %d < %는문자 d는 숫자를 뜻함 \n는 줄바꿈을 뜻함
break;
case 2:
System.out.println("답은:" + a + "-"+ b +"="+ (a-b));
>문자와 변수 사이에 +는 연결을 의미하기 때문에 계산식은 따로 묶어준다
break;
case 3:
System.out.println("답은:" + a + "*"+ b +"="+ (a*b));
break;
case 4:
System.out.println("답은:" + a + "/"+ b +"="+ (a/b));
break;
case 5:
System.out.println("답은:" + a + "%"+ b +"="+ (a%b));
break;
default:
System.out.println("메뉴 1~5번만 선택 가능합니다");
break;
}
풀이) 위에서는 각각 a,b,c에 사용자가 원하는 수를 대입하였음
>이를 이용해 사용자가 원하는 계산식과 결과를 출력함
>먼저 사용가 원하는 메뉴가 무엇인지에 따라 계산식과 결과값이 달라지기 때문에
>swith 에는 메뉴가 담긴 변수 c를 넣었음
>각각의 case에는 메뉴 번호를 넣어 메뉴에 따라 계산식과 결과 값이 출력되게 함
>5가지의 메뉴 이외에 다른 수를 입력할 경우 default 를 이용하여
>지정 메뉴만 선택 가능하다는 텍스트를 프린트하게 만들었음
}
- 반복문_for
package day2;
public class 반복문_for { public static void main(String[] args) {
// TODO Auto-generated method stub
>for문의 구조식과 실행 순서는 다음과 같다
for(/*1번*/int i = 0 ;/*2번*/ i < 5 ;/*4번*/ i++) { >i++는 i=i+1의 약자
/*3번*/System.out.println(i);
}
System.out.println("RIP");
풀이)1번부터 변수 int 를 i로 선언하고 0을 대입
>2번 i로 선언한 변수가 5보다 작다면
>3번 i를 콘솔에 출력한다
>4번 i에 1을 더하고 다시 1번부터 반복한다
>이후 i가 5보다 커지는 경우 빠져나와 "RIP"를 출력한다
for(int i = 1 ; i <= 10 ; i++) {
System.out.println(i);
}
>1부터 10까지 출력하는 for문의 구조식
>응용 예시문
for(int i = 1 ; i <= 10 ; i = i+2) {
System.out.println(i);
}
풀이) 변수를 i로 선언하고 1을 대입
>i가 10보다 작거나 같다면
>i를 출력
>이후 i에 2를 더해 10보다 작거나 같다면 반복, 커진다면 반복을 멈춤
>처음부터 변수 i에 1이 들어 있었기 때문에 +2를 진행하면 계속 홀수가 나옴
>이렇게 for문을 이용해 1~10까지 홀수만 출력하는 식을 배움
for(int i = 2 ; i <= 10 ; i= i+2) {
System.out.println(i);
}
풀이)이번에는 변수 i에 2를 대입
>i가 10보다 작거나 같다면
>i를 출력함
>이후 i에 +2를 하고 10보다 작거나 같다면 반복, 커진다면 멈춤
>변수 i에 2가 들어 있었기 떄문에 +2를 하게되면 계속 짝수가 나옴
>for문을 이용해 1~10까지 짝수만 출력하는 식을 배움
}
}
- 반복문_for예제
package day2;
public class 반복문_for예제
{ public static void main(String[] args) {
// TODO Auto-generated method stub
>참고만 하자 println에서 ln은 줄바꿈을 의미 print만 작성하면 가로 출력가능
// 문제) 1~10까지 가로 출력
// for(int i = 1 ; i <= 10 ; i++) {
// System.out.print(i+"\t");
// \t (이스케이프 문자)는 탭을 뜻함 \n는 줄바꿈
// }
// System.out.println("\n안\t녕");
//1~100까지의 합을 for문으로 구하자
// int sum = 0;
// for(int i = 0 ; i <= 100 ; i = i++) {
// sum = sum + i;
// }
// System.out.println(sum);
풀이)처음에 이해가 잘 안됨
>for문 안의 변수 i에 0을 대입
>i가 100보다 작거나 같다면
>따로 sum이라고 선언한 변수에 i를 더함
>이후 i에 1을 더하고 sum에 더하기를 100까지 반복
>실행문 밖에서 sum을 출력하여 1~100까지의 합을 구했음
>0인 sum에 0 + 1 +2 + 3 + 4 + 5 .... + 100 이렇게 더함
>이렇게 다 더해진 sum을 출력
//1~100까지의 짝수의 합을 for문으로 구하자
// int sum = 0;
// for(int i = 0 ; i <= 100 ; i = i+2) {
// sum = sum + i;
// }
// System.out.println(sum);
풀이)처음 1부터 10까지의 짝수를 구하는 for문의 응용
>간단한 수학 문제와 같음 2의 배수는 짝수
>위에 1~100의 합을 구하기 위해서 i에 +1을 했다면
>이번에는 i에 +2를 진행함 i는 애초에 0을 대입하였기에
>i가 100보다 작거나 같을때까지 2씩 늘어나며 찍수만 sum에 더해짐
>이후 다 더해진 변수 sum을 출력함
>1~100까지의 홀수의 합만 구하고 싶다면
for문 안의 변수 i에 1을 대입하고 반복마다 2를 더해주면됨
//6 * 1 = 6 이렇게 9까지 만들기
int dan = 6;
for(int i = 1 ; i <= 9 ; i++) {
System.out.println(dan + "*" + i + "=" + (dan*i));
}
>이번 문제는 99단중 6단을 출력하는 for문의 식입니다
>6단에서 6은 변하지 않기에 밖에 변수 dan으로 6을 대입하였습니다
>for문안의 변수는 i로 선언
>i가 9보다 작거나 같다면 실행문을 출력합니다
>이후 i에 1을 더하여 반복합니다
>실행문은 System.out.println(dan + "*" + i + "=" + (dan*i)); 으로
>dan은 처음 6을 대입한 이후 변한게 없기에 6 고정
>변수 i는 for문 안에서 1~9까지 1씩 증가합니다
>숫자 + 문자는 합이 아닌 나열이기 때문에 ()를 이용하여 계산식은 따로 설정하였습니다
>dan은 고정이고 i는 1씩 증가하기 때문에 곱하여 6*1 ,6*2 .... 6*9까지 계산됩니다
>pruntln을 이용하여 안에서 출력문을 실행하기에 세로로 6단이 출력됩니다
}
}
- 반복문_while
package day2; import java.util.Scanner;
import javax.swing.plaf.synth.SynthScrollBarUI;
public class 반복문_while
{ public static void main(String[] args) {
// TODO Auto-generated method stub
> while은 조건이 참이면 무한 반복 그렇기에 따로 조건을 설정해줘야함 <
int a = 5;
while(a <= 10) {
System.out.println("안녕");
a++;
}
풀이)whuile은 조건이 참이라면 무한히 반복합니다
>위의 식은 변수 a 에 5를 대입하였고
>while문안에 a가 10보다 작거나 같다면
>"안녕"을 출력하게 만들었습니다
>이렇게 출력을 진행하면 참이기 때문에 무한히 실행됩니다
>그렇기에 a++;라는 조건을 설정하여 변수 a 가 1씩 증가하여
>변수 a가 10이상이 될 수 있는 조건을 설정한 예시 입니다
문제>while을 이용해 1~10000까지 합한 값을 구하자<
int b = 0;
int a = 1;
while(a <= 10000) {
b = b+a;
a++;
}
System.out.println(b);
풀이)위에서 아래로 보면 편합니다
>변수 b,a에 각 0 , 1을 대입했습니다
>while문안에 a가 10000보다 작거나 같으면
>b = b+a로 변수 b와 변수 a를 합하여 대입하게 만들었습니다
>이렇게만 두고 실행하게 된다면 1이 무한으로 b에 더해지기 때문에
>조건 a++;을 이용하여 변수 a가 한번의 반복마다 1씩 증가하게 조건을 추가했습니다
>이후 변수 a 가 10000과 같아진다면 실행문을 빠져나와 b를 출력합니다
문제) 숫자를 계속 입력 받다가 0이 입력되면 반복문 종료
Scanner sc = new Scanner(System.in);
int a = 1;
while (a >= 1 || a <= -1) {
System.out.print("숫자입력 >");
a = sc.nextInt();
}
System.out.println("0입니다");
!!2일차 수업과정중 가장 이해하기 어려웠습니다!!
풀이)이 문제는 콘솔에 어떠한 숫자를 입력해도 상관없지만 0을 입력시 "0입니다"를 출력해 줘야 합니다
>먼저 변수 a에 1을 대입했습니다
>while문에 a가 1이상이면 혹은 a가 -1 이하면 이라고 설정했습니다
>실행문에 숫자를 입력하는 보기 쉽게 설정하고
>sc.nextInt();를 이용해 작성한 숫자를 가져와 a에 대입하게 하였습니다
>이렇게하면 0을 제외하면 모두 참이기 때문에 while문을 빠져나오지 못하고 무한히 반복합니다
>0을 입력하면 거짓이므로 while 문을 빠져나와 "0입니다"가 출력되게 하였습니다
문제) 선생님 풀이 boolean에 참을 대입하여 무한히 반복시키고 실행문에 변수 num과 if문을 사용해
만약 num에 0이 들어가면 boolean에 거짓을 대입하고 "0입니다"를 출력하게함
Scanner sc = new Scanner(System.in);
boolean check = true;
while(check) {
System.out.println("숫자입력 >");
int num = sc.nextInt();
if(num == 0) {
check = false;
System.out.println("0입니다");
}
}
// 문제)숫자를 계속 입력받으면서 3의 배수 , 5의 배수 , 3과 5의 배수를 출력하는데
// 0 이 입력되면 반복문을 끝낸다.
Scanner sc = new Scanner(System.in);
boolean b = true;
int a = 1;
while (b) {
System.out.print("숫자입력>");
a = sc.nextInt();
if (a == 0) {
b = false;
System.out.println("0입니다");
} else if (a % 3 == 0 && a % 5 == 0) {
System.out.println("3과 5의 배수입니다");
} else if (a % 3 == 0) {
System.out.println("3의 배수입ㄴ다");
} else if (a % 5 == 0) {
System.out.println("5의 배수입니다");
} else {
System.out.println("둘다 아님");
}
풀이)선생님 풀이의 응용입니다
>변수 a에 sc.nextInt();를 이용하여 사용자가 작성한 숫자를 대입하게 합니다
>boolean에 참을 대입하고 while에 넣어 무한히 반복하게 합니다
>이후 if문으로 a 가 0과 같다면 boolean에 거짓을 대입하고 "0입니다"를 출력합니다
>이후 else if와 else를 이용하여 조건을 걸어 실행시켰습니다
}
}
}
- 반복문_break_continue
package day2;
public class 반복문_break_continue {
public static void main(String[] args) {
// TODO Auto-generated method stub
!!break와 continue는 이문제만 풀이를 진행하겠습니다!!
for (int j = 2; j < 10; j++) {
if (j < 4) {
continue;
} else if (j == 8) {
break;
}
System.out.println(j + "단");
for (int i = 1; i < 10; i++) {
System.out.printf("%d * %d = %d\n", j, i, (j * i));
}
System.out.println();
}
풀이)for문 변수 j에 2를 대입하고 j가 10보다 작으면 반복하며 j에 1씩 더합니다
>만약 j가 4보다 작으면 continue;를 이용하여 for문의 2번 j < 10으로 다시 돌립니다
>그렇게 1씩 증가해 4이상이 되면 내려가 else if 를만나 j가 8이되면 반복문을 빠져나갑니다
>이렇게 5단부터 7단까지 System.out.printf("%d * %d = %d\n", j, i, (j * i)); 를 이용해
>콘솔에 출력됩니다
// for(int i = 1 ; i <= 10 ; i++) {
// System.out.println(i);
// if(i == 5) {
// break;
// }
// }
// System.out.println("끝");
// int dan = 3;
// for (int ban = 2; ban < 10; ban++) {
// System.out.printf(ban + "단" + "\t" + "\t");
// }
// System.out.println();
// for (int j = 1; j < 10; j++) {
// for (int i = 2; i < 10; i++) {
// System.out.printf("%d * %d = %d\t", i, j, (j * i));
// if(i==5) {
// break;
// }
// }
// System.out.printf("\n");
// }
// for (int i = 1; i <= 10; i++) {
// if (i == 5) {
// continue;
// }
// System.out.println(i);
// }
}
}
'나의 수업일지' 카테고리의 다른 글
인천 일보 아카데미 4일차 up&down게임_만들기 / 숫자 랜덤 출력 (0) | 2023.02.24 |
---|---|
인천 일보 아카데미 3일차 배운 변수와 문법을 사용하여 만들어보기 (0) | 2023.02.23 |
인천일보 아카데미 1일차 (오후) 조건문 if 와 Scanner (1) | 2023.02.21 |
인천일보 아카데미 수업 1일차 (오전) 변수 타입 _ 강제 형변환 (0) | 2023.02.21 |
안녕하세요 (0) | 2023.02.05 |