day4

상은👸·2023년 8월 31일
0

뚜벅뚜벅 첫번째

목록 보기
4/26
post-thumbnail

연습문제부터 어렵다... 형변환 헷갈리죽겠네 나만못하는가...하ㅜㅜ 다들잘하네 형변환은 다시정리해보자
연산자 끝! 증감연산자 -- ++는 끝날때까지도 헷갈린다..!

연습문제 1

  1. 계산결과가 "1013" 이 나오도록 코드를 작성하세요.
String a = "10";
int b = 3;
double c = 4.5;
_____ result = _______;
System.out.println(result);

① 101010 + (10+3) = 1000 + 13

String a = "10";
int b = 3;
double c = 4.5;
int aInt = Integer.parseInt(a);
int result = aInt * aInt * aInt + (aInt+b);
System.out.println(result);

-> 단순히 숫자로만 계산한 경우!
-> 문자열을 숫자로 바꾼 다음 1000+13을 해준다
String -> int 로 변환! = Integer.parseInt(바꿀값)

② "10" + 13 = "1013"

String a = "10";
int b = 3;
double c = 4.5;
double d = b * c; //13.5
int e = (int)d; //13
String result = a + e; // "10" + 13 = "1013"
System.out.println(result);

-> 먼저 b와 c를 곱하면 13.5가 나오는데 일단 double로 담아준다
-> 그 다음 int 정수 13으로 바꿔준다
-> 다음 "1013" 이라는 문자열로 바꿔줘야하는데 a가 문자열이므로 a+e 는 문자열 + 숫자 이기 때문에 하나만 문자열 이여도 문자열로 인식 가능하다!
-> 따라서 "1013"

=> 축약된 버전

String a = "10";
int b = 3;
double c = 4.5;  
String result = a + (int)(b * c);  
System.out.println(result);

※ 조심하자!
String result = a+ (int)b c;를 하게 되면 (int)b와 c를 따로 인식 하게 된다 그래서 1013.5가 나온다 10 + 3 4.5 = 1013.5

연습문제 2

  1. 계산결과가 "243" 이 나오도록 코드를 작성하세요.
int a = 4;
double b = 3.4;
String c = "6.8";
_____ result = _______;
System.out.println(result);

① 2 + 4 + 3 이 나오도록
(6-4) + 4 + 3 = "243"

int a = 4;
double b = 3.4;
int bInt = (int)b; //3
String c = "6.8";
double cDouble = Double.parseDouble(c); //문자열을 숫자로 
int cInt = (int)cDouble; // 실수를 정수로 //6
String result = String.valueOf(cInt -a) + a + bInt; // 문자열은 한문장만 바꿔줘도 문자열로 나온다!
System.out.println(result);

-> 먼저 실수 b를 정수 3으로 만들어주고
-> String 실수 c를 숫자 실수로 바꿔주고
-> 실수 c를 정수 6으로 바꿔주고
-> String result가 나올 수 있게 식에서 한문장만 문자열로 바꿔준다!

② 6 * 4 + 3 = "243"

int a = 4;
double b = 3.4;
int bInt = (int)b; //3
String c = "6.8";
double cDouble = Double.parseDouble(c); // 6.8
int cInt = (int)cDouble; //6
String result = "" + cInt*a + bInt;
System.out.println(result);

=>축약 된 버전

int a = 4;
double b = 3.4;
String c = "6.8";
String result = "" + ((int)Double.parseDouble(c)*a) + (int)b;
System.out.println(result);

-> String 문자열은 "" 넣으면 오류 안뜰거야..
->((int)Double.parseDouble(c)a) = 문자열 실수 c를 숫자로 바꿔 준 다음 정수 int로 바꾼 것! 그래서 6 4
-> (int)b는 실수 b를 정수 int로 바꾼것! 그래서 3
-> 결론 : "" 꼈으니까 문자열로 인식할거고 그래서 "243"

※ 내가 짠 코드..하....노답

int a = 4;
double b = 3.4;
String c = "6.8";
double d = Double.parseDouble(c);
double e = a * (int) d; // 24
//         4      6  = double이라서 24.0 으로 되잖아!!!!!
// int e = a * (int) d; // 앞에 int로 바꾸면 24로 바뀌니까 답이 243이 됨~
int f = (int)b;  //3
String g = String.valueOf(e); // "24"
String result = g + f; // "24" + 3
System.out.println(result); // 그래서 24.03 이 출력...

-> 나는 6 * 4 + 3 을 하고 싶었나봐
-> 먼저 문자열 c를 실수 6.8로 만들었고
-> 다음에 c를 정수로 바꾸는 (int)작업을 하고 a랑 곱해줘서 24를 만들었어
-> 근데 여기서 문제인게 내가 double e로 잡아버린거야 그래서 24.0 인 실수형태로 나와버렸고 이후에 답이 24.03이 되버린거지..

-> 그래서 이때 int e 로 잡으면 확실하게 정수 24로 나오니까 답이 243으로 나오게 된다!

---->다음 b를 정수 3으로 만들어주고
-> e를 문자열로 만들어 주는 String g = String.valueOf(e); 작업 후!
->String result = 문자열("24") + 정수(3) = "243"

연산자

  1. 대입 연산자 : += -= *= /= %=

  2. 증감 연산자

++ --

원본 변수 공간의 값에 영향을 준다!

++x; // 증감을 수행하고 다른 연산에 참여
x++; // 다른 연산을 수행하고 나중에 증감을 수행

  1. 비교 연산자

== != < > <= >=

== 같냐? != 같지않냐?(달라?)

  1. 논리 연산자

AND : 그리고 , && (둘다 같아야 같은거야)
true && true -> true
true && false -> false
false && true -> false
false && false -> false

OR : 또는 , || (둘 중에 하나라도 참이면 참이다)
true || true -> true
true || false -> true
false || true -> true
false || false -> false

NOT :아니다 , !
!true -> false
!false -> true

XOR(거의 안쓰임) : 다른가?, ^ (둘다 같으면 거짓 둘중에 하나가 다르면 참) => != 랑 의미같음
true ^ true -> false
true ^ false -> true
false ^ true -> true
false ^ false -> false

  1. 삼항 연산자

=> 조건식 ? 참 : 거짓

※ 중첩된 삼항 연산자

(조건식) ? 참 : 거짓;

-> (조건식) ? (참) : 거짓;
-> (조건식) ? ((조건식) ? 참 : 거짓) : 거짓;
이런식으로 중첩되서 사용할 수 있다,,

(조건식) ? ((조건식) ? 참 : 거짓) : 거짓;

(조건식) ? 참 : ((조건식) ? 참 : 거짓);

(조건식) ? ((조건식) ? 참 : 거짓) : ((조건식) ? 참 : 거짓);

(조건식) ? ((조건식) ? 참 : ((조건식) ? 참 : ((조건식) ? 참 : 거짓));

ex)
시험 점수가 50점 미만이면 재수강
50점 이상이면 통과긴 통과인데... 90점 이상이면 "장학금"

70 "통과"
95 "장학금"

50점 미만 재수강... 20점 미만 "탈락"
45점 "재수강"
10점 "탈락"

int score = 70;
String result;
result = (score >= 50) ? "통과" : "재수강";
System.out.println(result);

-> 조건이 더 붙을땐 중첩된 삼항 연산자로!
result = (score >= 50) ? ("통과") : ("재수강");

->강조된 글씨부분을 다시 이렇게 변경!
->result = (score >= 50) ? ((score >= 90) ? "장학금" : "통과") : ("재수강");

-> 뒤에 "재수강"도 똑같이!
result = (score >= 50) ? "통과" : "재수강";

-> result = (score >= 50) ? ((score >= 90) ? "장학금" : "통과") : ((score < 20) ? "탈락" : "재수강");

int score = 20;
String result;
result = (score >= 50) ? ((score >= 90) ? "장학금" : "통과") : ((score < 20) ? "탈락" : "재수강");
System.out.println(result);

같은 이치로

result = (score >= 90) ? "장학금" : ( score >= 50 ? "통과" : ( score < 20 ? "탈락" : "재수강" ));       

-> 높은 점수부터 차례대로 작성했을때!

profile
뒤죽박죽 벨로그

0개의 댓글

관련 채용 정보