자바실전_Day_03_01(연산자)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
1번째 예제
package operator1;
public class OperatorExam01 {
public static void main(String[] args) {
//System.out.println(5 / 3); // 1
//System.out.println(4 / 0); // java.lang.ArithmeticException: / by zero
//System.out.println(4 / 0.0); //Infinity
int num1 = 5;
int num2 = 3;
System.out.println("num1 + num2 = "+ num1 + num2); //문자열와 숫자더하면 숫자는 문자열로 바뀌어요
System.out.println("num1 + num2 = "+ num1 + num2); //문자열와 숫자더하면 숫자는 문자열로 바뀌어요
//숫자8을 만들고 싶다면 ()괄호를 붙인다.
System.out.println("num1 + num2 = "+ (num1 + num2));
System.out.println("num1 + num2 = "+ (num1 - num2));
System.out.println("num1 + num2 = "+ (num1 * num2));
System.out.println("num1 + num2 = "+ (num1 / num2));
System.out.println("num1 + num2 = "+ (num1 % num2));
System.out.println( 35.2 % 2.3); //나머지는 실수가아니라 정수에만.
System.out.println(2 + 3 * 5 / 2 - 7 ); //최악의 코드 : 보고 단순해야된다. 보고 바로 해석할수있도록 짜야한다.
//연산자 순서모른다면 괄호를 쳐야된다.
//* 곱하기 나누기,더하기 빼기 보다 괄호가 우선순위이다.
//★
// 5/2 = 몫 구하기 구분
// 5%2 = 나머지 구분
//----------------------- 이것은 응용 문제입니다.------------------ 각자리수 구하기
int num =821;
int tmp1 =0;
int tmp2 =0;
int ttmp1 =0;
int ttmp2 =0;
int ttmp3 =0;
int sum = 0;
if(num>0) {
tmp1 = (num/10)*10; //750
tmp2 = (num/100)*100; //700
System.out.println("750이되게 합니다. : " +(tmp1));
System.out.println("700이되게 합니다. : " +(tmp2));
}
if(num>0) {
ttmp1 = num-tmp1; //756-750 = 6
ttmp2 = (num-ttmp1-tmp2)/10;//(756-6)10 = 5
ttmp3 = (num-(ttmp2*10)-ttmp1)/100; //(756-50-6)/100 = 7
sum = ttmp1+ttmp2+ttmp3;
System.out.println("각 자리수를 빼서 1 번째 숫자 = : " + ttmp1);
System.out.println("각 자리수를 빼서 2 번째 숫자 = : " + ttmp2);
System.out.println("각 자리수를 빼서 3 번째 숫자 = : " + ttmp3);
}
//Tea
// 7 + 5 + 6 = 구하기 응용(나누기와 몫으로)
//나머지와 몫으로
// 6은 몫으로 ,
// 5는 ,전체값에서 706을빼주고 10으로 나누기
// 7은 전체값에서 ((5*10)+6)계산한 값빼기
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
2번째 예제
package operator1;
public class OperatorExam02 {
public static void main(String[] args) {
int pen=357;
int student =13;
int get =0;
int remain =0;
get = pen/student;
remain = pen%student;
System.out.println("--------------------------------------");
System.out.println("학생 1인당 받을 연핏 갯수 : " + get);
System.out.println("나눠주고 남은 연필의 갯수 : " + remain);
System.out.println("--------------------------------------");
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
3번째 예제
package operator1;
public class OperatorExam03 {
public static void main(String[] args) {
//#1. 변수 선언
int number = 756; //숫자
int share = 0; //숫자를 10으로 나눈 몫을 담을 변수
int result =0; //최종 결과를 담을 변수
//#2. 계산 처리
share = number / 10;
result = share *10;
System.out.println("숫자 : " + number);
System.out.println("숫자 / 10 : "+ share);
System.out.println("최종 결과 : " + result);
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
4번째 예제
package operator1;
public class OperatorExam04 {
public static void main(String[] args) {
//
// int num = 4;
//
//
// if((num%2)==0) {
// System.out.println("B팀");
// }else {
// System.out.println("A팀");
// }
//Tea
//#1. 변수 선언
int number =5; //숫자
String result = "";//문자열초기화
char test = ' '; //문자열과 다르게 문자는 한칸 띄우고 초기화
//#2. 삼항 연산자 활용
// (조건) ? 조건의 결과가 참일 때 실행 문장 : 거짓일 때 실행할 문장;
result = (number % 2 == 1) ? "A팀" : "B팀"; //사용방법은 모른다.
// 삼항 연산자 : (트루펄스값) ? 값 : 값; 이다.
System.out.println(result);
System.out.println("------------------------------------------");
int score2 = 0;
score2 = 55;
String result2 = "";
result2 = (score2 >= 80) ? "합격" : "불합격";
System.out.println("시험의 결과 : " +result2 );
System.out.println("------------------------------------------");
//Tea
int score =55;
result = (score >= 80)? "합격" : "불합격";
System.out.println(result);
//심화문제:
//3의배수냐 5의 배수냐
//몆회이상이면 골드 플레티넘
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
5번째 예제
package operator1;
public class OperatorExam05 {
public static void main(String[] args) {
int c=3;
// a=a+7;
// System.out.println("c=c+7 =>" + c); //c값 : 10
c +=7;
System.out.println("c+=7 =>" + c); //a값 : 10
c -=2; // a=a-2
System.out.println("c-=2 =>" + c); //a값 : 8
c *=2; // a=a-2
System.out.println("c*=2 =>" + c); //a값 : 16
c /=2;
System.out.println("c /=2 =>" + c); //a값 : 8
//증감연산자 전위형/후위형 계산법 (계산이 먼제 되냐 안되냐 차이)
c=0;
System.out.printf("%d\n",c++); //c먼저입력되고, 나중에 +1 계산이 된다.
System.out.println(c); //c계산이 끝난 값이 1
System.out.printf("%d\n",++c); //+1 계산이 먼저 되어 a와 함께 출력된다.
//선생님예제
int x=1;
int y=1;
int a=1;
int b=1;
int result1 = ++x + 10; // 12
int result2 = y++ + 10; // 11
int result3 = a-- +10; // 11
int result4 = --b + 10; // 10
System.out.println("result1 = "+result1);//결론적으로 result1에 저장된 값은 계산되어진 (x+1)+10전위형 값이 담겨져있다.
System.out.println("x : = "+x); // x값은 전위형 상관없이 결과값만 담겨져있다.
System.out.println("result2 = "+result2); //결론적으로 result2에 저장된 값은 후위형이므로 +1더하지 않는 y+10 값이 담겨져있다.
System.out.println("y : = "+y); // y값은 후위형과 상관없이 결과값만 담겨져있다.
System.out.println("result3 = "+result3); //결론적으로 result3에 저장된 값은 후위형이므로 -1을 빼지 않는 (b)+10 값이 담겨져있다.
System.out.println("result4 = "+result4); //결론적으로 result4에 저장된 값은 전위형이므로 계산되어진 (-1+b) + 10 = 값이 담겨져있다.
// a + b + c ( + +를 연산자 )(a,b,c 피연산자) (연산자 *,/,+,-)
//연산자
//피연산자
}
}