basic/java 실습
day03 연습문제 - 연산자(증감,대입,비교,논리,삼항), 사칙연산, Scanner 입출력
못지(Motji)
2021. 4. 23. 19:03
1. 증감연산자
package day03;
public class Test15 {
public static void main(String[] args) {
// 증감연산자 : ++ -- : 단독으로 쓸때는 상관없음
// 전위형 : ++10 ++a : 나먼저 연산
// 후위형 : 10++ a++ : 가장 나중에,다른거 먼저
int aa = 10;
System.out.println(aa); // Console 출력 : 10
++aa;
System.out.println(aa); // Console 출력 : 11
aa++;
System.out.println(aa); // Console 출력 : 12
--aa;
System.out.println(aa); // Console 출력 : 11
aa--;
System.out.println(aa); // Console 출력 : 10
int bb = 10;
System.out.println(++bb); // Console 출력 : 11 [1증가하고 b출력]
System.out.println(bb++); // Console 출력 : 11 [b를 출력하고 1증가]
System.out.println(bb); // Console 출력 : 12
int i = 5, j = 5;
System.out.println(i++); // Console 출력 : 5 // i:6 [출력후 1증가]
System.out.println(++j); // Console 출력 : 6 // j:6 [1증가후 출력]
System.out.println("i=" + i + ", j=" + j); // Console 출력 : i=6, j=6
int k = 10;
System.out.println(k++); // Console 출력 : 10 // k:11
System.out.println(++k); // Console 출력 : 12 // k:12
++k; // k:13
System.out.println(++k); // Console 출력 : 14 // k:14
System.out.println(k++); // Console 출력 : 14 // k:15
System.out.println(k); // Console 출력 : 15
int a = 10, b = 10, r = ++a + ++b;
System.out.println(r); // Console 출력 : 22 // r:22 a:11 b:11
r = ++a + b++; // r:23 a:12 b:12[+연산자 계산후 1증가]
System.out.println(r); // Console 출력 : 23
r = ++a + a; // r:26 a:13 b:12
System.out.println(r); // Console 출력 : 26
r = ++a + a++; // r:28 a:15 b:12
System.out.println(r); // Console 출력 : 28
r = ++a + ++a; // r:33 a:17 b:12
System.out.println(r); // Console 출력 : 33
System.out.println(a); // Console 출력 : 17
}
}
2. 사칙연산
package day03;
public class Test16 {
public static void main(String[] args) {
// 사칙연산 : + - * / % [나머지값]
int a = 10 % 3;
System.out.println(a); // Console 출력 : 1
a = 100000 * 100000; // Console 출력 : 1410065408 [값깨짐] // int * int 100억 처리할 수 없음
System.out.println(a); // Console 출력 : 1
long l = 100000L * 100000; // long * int > long * long = long
System.out.println(l); // Console 출력 : 10000000000
}
}
3. *문제* 입력받고 결과값 출력하기 (사칙연산 이용)
package day03;
import java.util.Scanner;
public class Test17 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 문제1. 숫자 2개를 입력받고 (입력문), 사칙연산 결과를 출력해보세요.
// 단, 0을 제외한 숫자 입력받기.
/* 문제1 정답
// 숫자 입력하라고 메세지 띄어주기
System.out.println("숫자1을 입력하세요, 단 0은 제외");
// 입력받고, 받은거 변수에 저장 > 변수 필요
int num1 = Integer.parseInt(sc.nextLine()); //문자열 이력받아 정수로 형변환
// 위에꺼 반복
System.out.println("숫자2를 입력하세요, 단 0은 제외");
int num2 = Integer.parseInt(sc.nextLine()); //문자열 이력받아 정수로 형변환
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));
*/
//문제2. 초단위로 정수를 입력받고, "?분, ?초" 형태로 출력해보세요. ex)120초 2분 0초
/* 문제2 정답
//메세지 출력
System.out.println("초단위 정수 입력 : ");
// 입력받아 저장
int input = Integer.parseInt(sc.nextLine());
// ?분 ?초 형태로 계산해서 출력
int min = input / 60;
int sec = input % 60;
System.out.println(min + "분 " + sec + "초");
*/
//문제3. 초단위로 정수를 입력받고, "?시간 ?분 ?초" 형태로 출력
/* 문제3 정답
System.out.println("초단위 정수 입력 : ");
int input = Integer.parseInt(sc.nextLine());
// 계산 : 1분 == 60초 1시간 == 60분 == 3600초
int hour = input / 3600;
int min = (input % 3600) / 60;
int sec = input % 60;
System.out.println(hour + "시간 " + min + "분 " + sec + " 초");
*/
/*
문제4. 최소 화폐매수 구하기
: 금액을 입력하면, 최소한의 화폐 매수를 출력하세요.
콘솔실행예)
금액입력 >> 67800 (사용자가 입력하는 부분)
5만원 1장
1만원 1장
5천원 1장
1천원 2장
5백원 1개
1백원 3개
*/ 문제4 정답
System.out.println("금액 입력 >>");
int money = Integer.parseInt(sc.nextLine());
System.out.println("5만원 : " + (money / 50000) + "장");
System.out.println("1만원 : " + ((money % 50000) / 10000) + "장");
System.out.println("5천원 : " + ((money % 10000) / 5000) + "장");
System.out.println("1천원 : " + ((money % 5000) / 1000) + "장");
System.out.println("5백원 : " + ((money % 1000) / 500) + "개");
System.out.println("1백원 : " + ((money % 500) / 100) + "개");
System.out.println("50원 : "+ ((money % 100) / 50) + "개");
System.out.println("10원 : "+ ((money % 50) / 10) + "개");
sc.close();
}
}
4. 비교연산자, 논리연산자, 삼항연산자
package day03;
public class Test18 {
public static void main(String[] args) {
// 비교연산자 > >= < <= == != : true / false의 결과가 나옴
int a = 10;
int b = 0;
// 논리연산자 : 비교 연삭식을 여러개 연결할때 사용
// && : and : 둘중에 하나라도 거짓이면 거짓, 모두 참이여야 참
// || : or : 둘중에 하나라도 참이면 참, 모두 거짓이여야 거짓
boolean res = a < b || b > 0;
System.out.println(res); // Console 출력 : false
// ! : not : 부정문 : 결과를 반대로 바꿔줌 true > false, false > true
int c = 10;
int d = 30;
boolean ress = c > d;
System.out.println("res : " + !ress); // Console 출력 : "res : true"
res = c > d && d>= 30;
System.out.println(!res); // Console 출력 : true // 저장된건 아니고 출력만 되는것임 res 그대로 F
res = !res; // 이렇게 따로 저장해야함
System.out.println(res); // Console 출력 : false
// 삼항연산자 : 조건식(비교식) ? 참일때 결과값 : 거짓일때 결과값;
int e = 10;
int f = 5;
String result = e < f ? "크다" : "작다";
System.out.println(result); // Console 출력 : 작다
int result2 = e < f ? 1 : 0;
System.out.println(result2); // Console 출력 : 0
char result3 = e > f ? 'o' : 'x';
System.out.println(result3); // Console 출력 : o
int result4 = e > f ? e : f; // 삼항연산자로 큰수 찾기
System.out.println(result4); // Console 출력 : 10
}
}
5. 대입연산자, 복합대입연산자
package day03;
public class Test19 {
public static void main(String[] args) {
// 대입연산자 : = : 대입을 해야 변수안의 값이 변경됨
int a = 10;
System.out.println(a + 10); // Console 출력 : 20
System.out.println(a); // Console 출력 : 10
System.out.println(a = a + 10); // Console 출력 : 20
System.out.println(a); // Console 출력 : 20
// 복합대입 연산자 : 산술 + 대입
// += -= *= /= %=
int b = 10;
System.out.println(b); // Console 출력 : 10
b += 10; // b = b + 10;
System.out.println(b); // Console 출력 : 20
int c = 5;
c += 1; // == c++
System.out.println(c); // Console 출력 : 6
}
}