My footsteps

반올림,비교연산자,논리연산자,조건과 대입연산자,조건문과 반복문,if,switch 본문

예습/이론

반올림,비교연산자,논리연산자,조건과 대입연산자,조건문과 반복문,if,switch

밀김 2022. 12. 31. 11:50
728x90

 

 

 

 

 

- 반올림/실수를 소수점 첫 째자리에서 반올림한 정수를 반환 : Math.round()

 

- int 나누기 int는 소수점 탈락이 되어 정수로 나오니 유의

 


double pi = 3.141592;
System.out.println(pi);  // 3.141592
System.out.println(pi*1000); // 3141.592
System.out.println(Math.round(pi*1000)); // int인 상태에서 반올림 되서 3142
System.out.println(Math.round(pi*1000)/1000); // int인 상태에서 3142나누기1000을 해서 소수점 탈락하면 3
System.out.println((double)Math.round(pi*1000)/1000); // 그래서 앞에 더블형으로 형변환을 해줘야 3.142 가 나옴

 


double pi = 3.141592; 
System.out.println(pi);   //  3.141592
System.out.println(pi*1000);  // 3141.592
System.out.println((int)(pi*1000)); // 정수로 변환해서 소수점 탈락. 3141
System.out.println((int)(pi*1000)/1000.0); // 소수점을 살리고 싶으면 1000.0을 곱한다. 그럼 3.141

 

 

-  나머지 연산자 : % 

 

- 나머지 연산자는 무조건 피연산자가 정수여야만 한다. 마이너스 부호 이런거 붙여도 그냥 정수 그 자체만 받아드림

 

ex)

10/8 > 결과값은 1이 나온다. 왜냐면 10나누기 8의 몫은 1이니까. 하지만 나머지 값은 2가 나오기 때문에

10%8 > 결과값은 2

 

 

 

- 비교 연산자

 

 

- 문자열을 비교할때는 == 대신 equals()를 사용해야함

 

- 논리연산자 &&(AND결합) || (OR결합)

 


x가 10보다 크고 20보다 작다
x > 10 && x < 20
10 < x && x < 20
보기 쉽게 아래쪽처럼 써주는게 좋다

(무조건 and 결합&&을 써줘야함. 생략하면 오류남)


i는 2의 배수 또는 3의 배수이다
이 말은 i를 2로 나누었을때 나머지값이 나오지 않는다는것, 즉 0이라는 얘기다. (나머지 연산자 쓰기)
i%2==0 || i%3==0


i의 값이 8일때 i는 2의 배수 또는 3의 배수식 해석해보기
i%2==0 || i%3==0
8%2==0 || 8%3==0
0==0 || 2==0
true || false
최종 결과값은 true다. 이유는 또는인 OR결합이었기 때문에 둘중 하나만 참이여도 최종결과는 참으로 나옴


i는 2의 배수 또는 3의 배수지만 6의 배수는 아니다(!)
( i%2==0 || i%3==0 ) &&  i%6!==0
AND가 들어갈때는 반드시 괄호를 쳐야한다. 어느게 먼저 계산되어야 하는지 알수있으니까


문자 ch는 숫자('0'~'9')이다
'0' <= ch && ch <= '9'


문자 ch는 대문자 또는 소문자이다
('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z')

 

 

- 논리 부정 연산자 

x (부정) !x (부정의 부정)
true flase
false true

 

 ex)

문자ch는 소문자가 아니다 (=대문자다..근데 걍 대문자로 짜면 안되나? 굳이 부정을 해야할..예제라 그런가)

( 'a' <= ch && ch <= 'z' ) // 문자 ch는 소문자다. 'a'~'z' 사이에 있다는 뜻 

! ( 'a' <= ch && ch <= 'z' ) // 근데 바로 앞에 부정연산자를(!) 넣으면 부정이 되버림. 소문자가 아니라는뜻

 

 

 

- 조건연산자 (?)

  조건식 ? 식1 : 식2 

  > 참이면 식1으로 가고, 거짓이면 식2로 간다

 

ex)

result = ( x > y ) ? x : y ;  // 괄호는 생략 가능하지만 써주는게 구분하기에 좋다

참이면 변수result에 x가 대입되고 거짓이면 y가 대입됨

 

 

- 대입 연산자 에서 왼쪽 피연산자를 lvalue 오른쪽은 rvalue 라고 함, 식은 오른쪽에서 왼쪽 순으로 계산되기 때문에 왼쪽은 반드시 <저장공간>이여야 한다. 변수나 배열같은...값을 변경할수 없는 상수같은것도 에러가남. 무조건 저장공간!

 

 

- 복합 대입 연산자

 i = i +3; 이거랑 i +=3; 이건 같은 의미다. 외워두는것이 좋음!!! 다만, 오른쪽의 피연산자가 두개일경우에는 반드시 괄호를 쳐야한다. 

ex)

i *= 10 + j 이렇게 하면 에러남. i = i * (10+j) 이러게 괄호를 쳐줘야한다.

 

 


 

 

- 조건문 : 조건을 만족할때만 수행 / 반복문 : 조건을 만족하는 동안 수행(for문,while문)

 

- if : 조건식이 참일때 문장들을 수행, 거짓이면 실행하지않고 다음문장으로 넘어감

 

- equalsIgonoreCase : 영문의 대소문자 구분 안하는 조건식

  ex) 

  str.equalsIgonoreCase("yes") 면 YES여도 참으로 나옴

 

 

 

 

- { } 대괄호는 생략할수 있지만, 생략 가능한 경우는 블럭에{ } 속한 문장 한줄만!! 가능하다. 

 

 

- if-else문 : 둘중하나 조건식이 참일때와 거짓일때로 나눠서 처리 (if문을 두번 처리 하지 않고 참/거짓 나눠서 한번만 처리하게 할 수 있어서 코드 보기도 간략한 조건식임)

if (조건식) {

           조건식 참일때 수행될 문장들

}else {

          조건식이 거짓일때 수행될 문장들

}

 

 

- if-else-if : 여러개의 조건식을 포함한 조건식. 1234중 첫번째 조건이 맞으면 참으로 나와서 종료되고 거짓이면 두번째 세번째로 내려감. 참이 나올때까지. 두개가 실행되는 경우는 절대 없다

 

- if-else문에서 생략할수 있는 문장들은 생략하는게 좋다. 예를 들어 90점 이상이면 A학점 인데 그 다음 문장이 80점 이상이면 B학점 이라면, 두번째 문장은 당연히 90점 이상이 충족이 되지 않는것이니, 굳이 범위를 쓸때 90점을 포함한 범위를 쓸 필요가 없음. else if (80 <= score && score < 90) 진한글씨 표시한게 생략 가능.

 

- 그리고 또 문장을 간략화 할수있는 방법은, 기본 최하위값을 기본 값으로 지정해놓은다음 최상위 값부터 쭉쭉 내려오면서 실행하게 할수도 있음. 예를들어, 젤 꼴찌인 D학점을 기본으로 설정하면 나머지 ABC학점만 범위 설정 해놓고 거기에 부합하면 그에 맞는 학점이 뜨고 세개에 다 부합하지 않으면 D학점이 나오게 설정하는것..else문이 한줄 없어지는거라 좋음!

 

 

- opt : 옵션

 

 

 

https://opentutorials.org/module/4053/24635

 

printf, %d, int - 같이 배우는 C언어

아기가 태어나 엄마,아빠를 말하는 법을 처음 배우듯, 프로그래밍도 말하는 법을 처음 배우게 된다. c언어에서는 문자를 출력하기 위해 printf라는 코드를 이용한다. #include int main() { printf("Hello");

opentutorials.org

(자꾸 헷갈리는 printf 지시자..)

 

 

 

 

- switch문 : 처리해야하는 경우의 수가 많을때 유용한 조건문. 조건식을 계산한뒤 그 결과와 일치하는 case문으로 이동. 이후의 문장들을 수행한다음, break문이나 sitch문의 끝을 만나면 문장을 종료한다

 

- if문은 true/false 로만 값이 출력되는데 switch문은 정수,문자열을 출력할수 있기때문에 상황에 맞는걸 쓰면됨

 

- 스위치문은 이프문으로 얼마든지 바꿀수 잇는데 그 반대는 안되는 경우가 많다. 제약조건때문에...

 

- case문의 제약조건은 값은 정수,상수(문자포함),문자열만 가능. 변수안됨. 그리고 값들이 중복되지 않아야함

 

 

 

 

- 임의의 정수 = 난수 만들기(게임이나 섞기 만들때 자주 쓰임) 

 

- Math.random() : 0.0과 1.0사이의 임의의 double값을 반환

 

- 각 변에 원하는 정수 범위만큼 곱한다  > 각 변을 int형변환을 함 

 


ex)
1~10사이의 난수 20개를 출력하시오
int num = 0;
for (int i = 1; i <= 5; i++) {
// System.out.println(Math.random());
// System.out.println(Math.random()*10);  //1부터 10까지의 난수 갯수
System.out.println((int)(Math.random()*10)); //소수점 탈락하게 int로 형변환 해준다
}

 

 

 

 

 

 

728x90

'예습 > 이론' 카테고리의 다른 글

Srting배열,커맨드 라인,2차원 배열,객체  (0) 2023.01.02
for문,while문,break문,배열  (0) 2023.01.01
형변환  (0) 2022.12.30
단항,이항 연산자  (0) 2022.12.29
연산자  (0) 2022.12.29