전체 글 (135)

20230915
728x90

 

수업내용 정리 (Java)

 

1. Scanner

import java.util.Scanner;

Scanner sc = new Scanner(System.in);
  • Scanner 첫부분은 무조건 대문자
  • Scanner를 사용하려면 import로 Scanner 클래스를 호출해줘야 한다.
  • 콘솔창에서 데이터를 입력받을 수 있다.

 

int a = sc.nextInt();
  • 입력받은 데이터를 a에 저장

 

2. 조건문_if (예제)

 문제 > 90 이상이면 'A', 80 이상이면 'B', 70 이상이면 'C', 60 이상이면 'D', 60 미만이면 'F'

if(a >= 90) {
	System.out.println(a + "는 A입니다.");
}else if(a >= 80) {
	System.out.println(a + "는 B입니다.");
}else if(a >= 70) {
	System.out.println(a + "는 C입니다.");
}else if(a >= 60) {
	System.out.println(a + "는 D입니다.");
}else if(a < 60) {
	System.out.println(a + "는 F입니다.");
}else {
	System.out.println("오류");
}

 

 문제 > 숫자 두 개를 받아 계산하기

System.out.print("첫번째 숫자> ");
int num1 = sc.nextInt();   // 콘솔 창에서 입력받아올 데이터(첫번째 숫자)
System.out.print("두번째 숫자> ");
int num2 = sc.nextInt();   // 콘솔 창에서 입력받아올 데이터(두번째 숫자)

System.out.println("1.더하기 2.빼기 3.곱하기 4.나누기 5.나머지");
System.out.print("메뉴선택> ");
int menu = sc.nextInt();   // 콘솔 창에서 입력받아올 데이터(메뉴 선택)

if(menu == 1) {
	System.out.println(num1+" + "+num2+" = "+(num1+num2));
}else if(menu == 2) {
	System.out.println(num1+" - "+num2+" = "+(num1-num2));
}else if(menu == 3) {
	System.out.println(num1+" * "+num2+" = "+(num1*num2));
}else if(menu == 4) {
	System.out.println(num1+" / "+num2+" = "+(num1/(double)num2));
}else if(menu == 5) {
	System.out.println(num1+" % "+num2+" = "+(num1%num2));
}else {
	System.out.println("오류!");
}
  • /(나누기)에 (double)을 붙이면 정수를 실수로 형변환한다.

 

 문제 > 입력받은 수가 3의 배수인지, 5의 배수인지, 둘 다인지, 아닌지 출력

Scanner sc = new Scanner(System.in);
System.out.println("숫자입력> ");

int a = sc.nextInt();
int b = sc.nextInt();

if(a != 0 && (a % 3 == 0 || a % 5 == 0)) {
	if(a % 3 == 0 && a % 5 == 0) {
		System.out.println("3과 5의 배수");
	}else if(a % 5 == 0) {
		System.out.println("5의 배수");
	}else {
		System.out.println("3의 배수");
	}
}else {
	System.out.println("해당 없음");
}

 

 문제 > 로그인 (아이디가 틀렸습니다. 비밀번호가 틀렸습니다. 로그인 성공)

Scanner sc = new Scanner(System.in);

String a = "test";   // 회원가입한 아이디
String b = "1234";   // 회원가입한 비밀번호

System.out.print("아이디 입력> ");
String id = sc.next();    // 콘솔 창에서 입력받아올 데이터
System.out.print("비밀번호 입력> ");
String pw = sc.next();    // 콘솔 창에서 입력받아올 데이터

if(id.equals(a) || pw.equals(b)) {
	if(id.equals(a) && pw.equals(b)){
    	System.out.println("로그인 성공");
    }else if(!id.equals(a)){
    	System.out.println("아이디가 틀렸습니다.)");
    }else{
    	System.out.println("비밀번호가 틀렸습니다.");
    }
}else {
	System.out.println("로그인 실패");
}
  • String은 같다는 것을 ==이 아닌 .equals()로 비교하고, 같지 않다는 것은 없어서 .equals()를 붙이고 앞에 !를 붙이면 된다. (괄호 안에 비교할 것을 입력)

 

3. 조건문_switch

switch(a) {
case 1:
	System.out.println("a는 1입니다.");
	break; // break가 없으면 그 밑으로 계속 실행함
case 2:
	System.out.println("a는 2입니다.");
	break;
case 3:
	System.out.println("a는 3입니다.");
	break;
default:  // else와 같음
	System.out.println("a는 1, 2, 3이 아닙니다.");
}
  • if처럼 해당하지 않으면 다음으로 넘어간다.
  • case는 비교가 불가
  • break가 없으면 해당하는 case부터 계속 실행한다.
  • default는 else와 같다. 위에서 해당하지 않은 경우에 실행한다.

 

 3-1) 조건문_switch (예제)

int sum = 100;
int num = 2;

switch(num) {
case 1:
	sum = sum+100;
case 2:
	sum =100;
case 3:
	sum = sum+200;
case 4:
	sum = 200;
case 5:
	sum = sum+300;
	break;
default:
	sum = 300;
}
  • 해당 식의 출력 값은 500.
  • 시작하는 case는 2지만 break가 case 5에 있기 때문에 case 2부터 5까지 계속 실행한다.
case 2:
	sum = 100;		// sum에 100을 대입 sum == 100
case 3:
	sum = sum+200;		// sum에 200을 더함 sum == 300
case 4:
	sum = 200;		// sum에 200을 대입 sum == 200
case 5:
	sum = sum+300;		// sum에 300을 더함 sum == 500
	break;

 

4. 반복문_for

for(초기값; 조건식; 증감식) {
	실행문;
}
  • 초기값이 조건식에서 참이면 실행문을 실행하고, 증감했을때 조건식에서 참이면 다시 실행문을 실행하는 것을 반복하다가 조건식에서 거짓일때 for문이 종료된다.
  • 조건식이 참일 때까지 for문 반복

 

 4-1) 반복문_for (예제)

 문제 > 1부터 10까지 출력

for(int i=1; i<=10; i++){
	System.out.println(i);
}

 

 문제 > sum에 100까지 누적해서 합을 출력

int sum = 0;

for(int i=1; i<=100; i++) {
	sum = sum+i;		// sum += i; 와 같음
}
System.out.println(sum);

 

 문제 > 1~100부터 3의 배수, 5의 배수의 개수를 출력

int sum3 = 0;
int sum5 = 0;

for(int i=1; i<=100; i++{
	if(i%3 == 0) {
		sum3 = sum3+1;
	}
	if(i%5 == 0) {
		sum5 = sum5+1;
	}
}
System.out.println("1~100까지 3의 배수의 개수는: "+sum3);
System.out.println("1~100까지 5의 배수의 개수는: "+sum5);

 

 문제 > 구구단을 가로로 출력

 1- 일반 구구단

for(int i=2; i<10; i++) {
	System.out.println(i+"단");
	for(int j=1; j<10; j++) {
		System.out.println(i+" * "+j+" = "+(i*j));
	}
	System.out.println();
}

2- 가로로 출력한 구구단

for(int i=0; i<10; i++) {
	for(int j=2; j<10; j++) {
		if(i == 0) {
			System.out.print(j+"단"+"\t\t");
		}else {
			System.out.print(j+" * "+i+" = "+(i*j)+"\t");
		}
	}
	System.out.println();
}
출력 예시)

2단		3단		4단		5단
2 * 1 = 2	3 * 1 = 3	4 * 1 = 4	5 * 1 = 5
2 * 2 = 4	3 * 2 = 6	4 * 2 = 8	5 * 2 = 10
  • ln을 사용함으로 단을 나눠버리면 다시 위로 돌아가 수정/작성할 수 없으므로 단을 나누기 전에 해결해야 가로로 출력 할 수 있다.
  • 가로로 출력하기 위해서는 단(1- 식의 i)과 곱할 수(1- 식의 j)의 자리를 바꿔주면 가능하다.
  • 2단~9단을 한 번만 적기 위해서는 반복할 수 없도록 걸러줘야 한다.
    걸러주기 위해서 곱할 수(2- 식의 i)를 0으로 내려주고, for문 안의 for문에서 if를 사용하여 i가 0일 때는 j단을 출력한다고 조건을 걸어준다. else로는 0이 아닐 때에는 구구단을 출력한다.

 


 

질문한 내용이나 어려웠던 점 메모

  1. for문 문제에서 배수의 개수를 출력하는 식을 만들때 %랑 /를 헷갈려서 /로 식을 만들다가 안 풀려서 물어봤다.
    % : 나머지
    / : 나누기
  2. 구구단을 가로로 출력: 구구단을 가로로 출력하는 것까지는 해결했는데 처음에 단을 늘어놓는 것이 너무 어려웠다. 단을 적으려다가 이미 출력해둔 구구단이 망가지거나 2단~9단이 구구단을 할 때마다 계속 실행되고 그래서 질문을 통해 하나하나 설명을 들었다.

 


 

전체 피드백

  • 아직은 부호가 헷갈려서 버벅거리는 부분이 있다.
  • 너무 배웠던 내용으로만 생각해서 문제를 풀기 어려웠던 것 같다. 응용하는 능력을 조금 길러야할 것 같다.
  • for문을 제하면 그래도 잘하고 있는 것 같다!

 


728x90
20230914
20230913
728x90

 

수업 내용 정리 (Java)

 

0. 콘솔 창에 표시

System.out.println("콘솔창에 띄울 내용");

콘솔창에는 괄호 안의 내용이 띄워진다. 선언했던 변수를 적거나, 따로 큰따옴표(" ") 안에 내용을 적어 띄울 수 있다.

+ 전부 타이핑하지 않고, sysout 입력 후 ctrl + space bar 키를 누르고 enter 키를 누르면 자동완성이 되어서 편하게 작성할 수 있다.

+ 자동 완성으로 입력하면 자동으로 줄바꿈이 되지만, 가로로 출력하고 싶다면 println에서 뒤에 있는 ln을 지우면 된다.

 

 

1. 변수 (variable)

  • 데이터를 사용하기 위해 저장하는 공간
  • 선언하지 않은 변수는 사용 할 수 없음
int a = 10;

a = 20;
b = 10;
  • a라는 변수를 선언하면서 초기 값은 10으로 한다.
  • 선언했던 a라는 변수의 값을 20으로 변경한다.
  • 선언하지 않은 b는 사용할 수 없다.

 

 

2. 연산자

 2-1) 산술연산자

  • + : 더하기
  • - : 빼기
  • * : 곱하기
  • / : 나누기
  • % : 나눈 후 나머지 값

 

 2-2) 비교연산자

  • a > b : a가 b보다 크다.
  • a < b : b가 a보다 크다.
  • a >= b : a가 b보다 크거나 같다.
  • a <= b : b가 a보다 크거나 같다.
  • a == b : a랑 b가 같다.
  • a != b : a랑 b가 다르다.

 

 2-3) 논리연산자

  • && : 그리고 (and)
  • || : 또는 (or)
  • ! : 아닌 (not)

 

 

3. 타입

 3-1) 정수

  • int
  • 범위: -2147483648 ~ 2147483648
  • 크기: 4byte
int a = 10;
int b = 7;

int c = a + b;
int d = a - b;

System.out.println(c);
System.out.println(d);

이 경우 c는 17, d는 3의 값으로 출력된다.

 

 3-2) 실수

  • double (소수점을 포함)
  • 범위: -1.7E308 ~ 1.7E308
  • 크기: 8byte
double a = 10.4;
double b = 3.3;

double c = a + b;
double d = a - b;

System.out.println(c);
System.out.println(d);

이 경우 c는 13.7, d는 7.10000005의 값으로 출력된다.

 

 3-3) 문자

  • char
  • 범위: 모든 유니코드 문자
  • 크기: 2byte
  • ' ' 안에 작성해야 함!
  • 유니코드 문자이기 때문에 숫자로도 표현 가능하고, 더할 수도 있다.
char a = 'ㄱ';
char b = 'ㄴ';

System.out.println(a);
System.out.println(b);
System.out.println(a+b);

이 경우 a는 ㄱ, b는 ㄴ, a+b는 25189의 값으로 출력된다.

 

 3-4) 문자열

  • String
  • " " 안에 작성해야 함!
String a = "홍길동"
String b = "심청이"

System.out.println(a);
System.out.println(b);

이 경우 a는 홍길동, b는 심청이의 값으로 출력된다.

 

 3-5) 불리언

  • boolean
  • 범위: true / false
  • 크기: 1bit
boolean a = true;
boolean b = false;

System.out.println(a);
System.out.println(b);

이 경우 a는 true, b는 false의 값으로 출력된다.

int a = 9;
int b = 4;

boolean c = a > b;
boolean d = a < b;

System.out.println(c);
System.out.println(d);

이 경우 c는 true, d는 false의 값으로 출력된다.

 

4. 형변환

 4-1) 자동형변환

  • 작은 저장 공간에서 큰 저장 공간으로 데이터 이동을 하는 경우
  • 문자형 char은 int 자동형변환으로 정수로 표현할 수 있다.
  • 오른쪽에서 왼쪽으로 변환!
int a = 10;
long b = a;

이 경우, int가 long보다 크기가 작으므로 자동형변환을 사용한다. 

 

4-2) 강제형변환

  • 큰 저장 공간에서 작은 저장 공간으로 데이터 이동을 하는 경우
  • 오른쪽에서 왼쪽으로 변환!
long a = 10000l;
int d = (int)a;

이 경우, long이 int 보다 크기가 크므로 a 앞에 (int)를 붙여 강제형변환을 사용한다.

 

5. 조건문_if, else if, else

  • if와 else if, else는 하나로 묶어 사용한다.
  • if: 조건이 참이면 실행 / else if: if가 거짓이고 else if가 참일 때 실행 / else: if도 else if도 거짓일 때 실행
int age = 5;

if(age >= 19) {
	System.out.println("성인입니다.");
}else if(age >= 13) {
	System.out.println("청소년입니다.");
}else if(age <= 7) {
	System.out.println("어린아이입니다.");
}else {
	System.out.println("오류");
}

이 경우, 선언한 변수가 5의 값을 가지고 있으니 결과는 어린아이입니다. 가 출력된다.

 


 

질문한 내용이나 어려웠던 점 메모

  • 형변환: 데이터의 값을 모르고 있었고, 따라서 크기 차이도 모르는 상황이라 더욱 이해하기 힘들었다. 강제형변환에서 괄호 안에 타입을 적는 것은 알겠는데 베이스인 값을 모르다보니 한 눈에는 알아보기 힘들었다.
  • 8bit = 1byte

 


 

전체 피드백

 사전교육 때 배웠던 내용과 겹치는 부분은 쉽게 따라갈 수 있었으나 새로운 부분은 헷갈려서 계속 봐야할 것 같다.

 


728x90
1 ··· 10 11 12 13 14 15 16 ··· 27