OperatorMain03
생성
public class OperatorMain03 {
public static void main(String[] args) {
int korean = 90;
int english = 95;
int math = 88;
// 총점 구하기
int sum = korean + english + math;
// 평균 구하기
int avg = sum / 3;
System.out.printf("국어 : %d점\n영어 : %d점\n수학 : %d점\n총점 : %d점\n평균 : %d점", korean, english, math, sum, avg);
}
}
연산자 | 의미 | 순위 |
---|---|---|
> | 크다 | 4순위 |
< | 작다 | |
>= | 크거나 같다 | |
<= | 작거나 같다 | |
== | 같다 | |
!= | 같지 않다 |
OperatorMain04
생성public class OperatorMain04 {
public static void main(String[] args) {
System.out.println("====비교 연산자====");
boolean result;
int a = 10;
double b = 10.5;
result = a < b; // int인 a가 double로 자동 형변환되어 a와 b의 연산이 수행되며, 연산 결과는 boolean
System.out.println("a < b : " + result);
result = a > b;
System.out.println("a > b : " + result);
result = a >= b;
System.out.println("a >= b : " + result);
result = a <= b;
System.out.println("a <= b : " + result);
result = a == b;
System.out.println("a == b : " + result);
result = a != b;
System.out.println("a != b : " + result);
}
}
연산자 | 의미 | 순위 |
---|---|---|
&& | AND(논리곱) | 6순위 |
|| | OR(논리합) | |
! | 부정 | 1순위 |
OperatorMain05
생성public class OperatorMain05 {
public static void main(String[] args) {
System.out.println("====논리 연산자====");
boolean a, b, result;
a = true;
b = false;
result = a && b;
System.out.println("a && b = " + result);
result = a || b;
System.out.println("a || b = " + result);
result = !a;
System.out.println("!a = " + result);
}
}
OperatorMain06
생성public class OperatorMain06 {
public static void main(String[] args) {
// 증감 연산자, 비교 연산자, 논리 연산자
int a, b;
a = b = 10;
boolean c = a++ >= ++b && ++a > b++; // 전건은 10>=11 연산 후 a를 11로 변경하며, 논리곱의 전건이 false이므로 후건은 실행하지 않음
System.out.println(a + ", " + b);
System.out.println("c = " + c);
int d, e;
d = e = 10;
boolean f = ++d > e++ || d++ >= ++e; // 전건은 11>10 연산 후 e를 11로 변경하며, 논리합의 전건이 true이므로 후건은 실행하지 않음
System.out.println(d + ", " + e);
System.out.println("f = " + f);
}
}
연산자 | 의미 | 순위 |
---|---|---|
?: | 조건?참값:거짓값 | 7순위 |
OperatorMain07
생성
syso
입력 후 ctrl
+space
입력시 System.out.println();
이 자동 완성됨.public class OperatorMain07 {
public static void main(String[] args) {
System.out.println("====조건(삼항) 연산자====");
int x = 10, y = -10;
int absX = x >= 0 ? x : -x; // 연산자 우선순위로 인해 소괄호 없어도 동작하지만, 가독성을 위해 소괄호 사용해도 관계없음
int absY = (y >= 0) ? y : -y;
System.out.println("x = " + x + "일 때 x의 절대값은 = " + absX);
System.out.println("x = " + y + "일 때 y의 절대값은 = " + absY);
}
}
OperatorMain08
생성public class OperatorMain08 {
public static void main(String[] args) {
System.out.println("====조건(삼항) 연산자====");
int a = 5, b = 10;
int max, min;
max = a > b ? a : b;
min = a < b ? a : b;
System.out.println(a + "와 " + b + "의 최댓값은 " + max);
System.out.println(a + "와 " + b + "의 최솟값은 " + min);
}
}
연산자 | 의미 | 순위 |
---|---|---|
= | 연산자 오른쪽 값을 왼쪽 변수에 대입 | 8순위 |
+= | 연산자 왼쪽 변수 값과 오른쪽 값을 덧셈하여 왼쪽 변수에 대입 | |
-= | 연산자 왼쪽 변수 값과 오른쪽 값을 뺄셈하여 왼쪽 변수에 대입 | |
*= | 연산자 왼쪽 변수 값과 오른쪽 값을 곱셈하여 왼쪽 변수에 대입 | |
/= | 연산자 왼쪽 변수 값과 오른쪽 값을 나눗셈하여 몫을 왼쪽 변수에 대입 | |
%= | 연산자 왼쪽 변수 값과 오른쪽 값을 나눗셈하여 나머지를 왼쪽 변수에 대입 |
OperatorMain09
생성public class OperatorMain09 {
public static void main(String[] args) {
System.out.println("====대입 연산자====");
int a = 5, b = 7;
a += b; // a = a + b
System.out.println("a = " + a);
a -= b; // a = a - b
System.out.println("a = " + a);
a *= b; // a = a * b; a&=b는 a = a & b와 같으며, 비트 단위의 AND 연산을 수행함
System.out.println("a = " + a);
a /= b; // a = a / b
System.out.println("a = " + a);
a %= b; // a = a % b
System.out.println("a = " + a);
}
}
OperatorMain10
생성public class OperatorMain10 {
public static void main(String[] args) {
/*
* [실습]
* 534자루의 연필을 30명의 학생들에게 똑같은 개수로 나누어 줄 때,
* 학생 당 몇 자루를 가질 수 있고, 최종적으로 몇 자루가 남는지를 구하시오.
*
* [출력 내용]
* 학생 한 명이 가지는 연필 수 : ?
* 남은 연필 수 : ?
*/
int pencils = 534, students = 30;
System.out.printf("학생 한 명이 가지는 연필 수 : %d\n남은 연필 수 : %d\n", pencils/students, pencils%students);
}
}
OperatorMain11
생성public class OperatorMain11 {
public static void main(String[] args) {
/*
* [실습] 성적 처리
* 국어, 영어, 수학 성적을 입력받아서 총점, 평균(double)을 구하고 각각을 출력
* [출력 예시]
* 국어 =
* 영어 =
* 수학 =
* 총점 =
* 평균 = (소숫점 아래 둘째 자리까지 표시)
*/
java.util.Scanner input = new java.util.Scanner(System.in); // 입력 시작
System.out.print("국어 : "); // 입력시의 가이드 문자열; println을 쓰면 다음 줄에 입력하게 됨
int kor = input.nextInt(); // 정수를 입력받는 함수로 값을 받아 변수에 대입
System.out.print("영어 : ");
int eng = input.nextInt();
System.out.print("수학 : ");
int math = input.nextInt();
System.out.printf("국어 = %d\n영어 = %d\n수학 = %d\n총점 = %d\n평균 = %.2f", kor, eng, math, kor+eng+math, (kor+eng+math)/3d); // 만약 (kor+eng+math)/3으로 연산 후에 그 결과를 double로 형변환하게 되면, 연산은 정수끼리의 나눗셈으로 몫을 구했기 때문에 소숫점 아래 정보가 부정확해짐.
input.close(); // 입력 끝
}
}
ch03-operation
생성하고 새 클래스 IfMain01
생성public class IfMain01 {
public static void main(String[] args) {
int n = 10;
// 단일 if문
if(n > 5) { // 소괄호 안에는 boolean 데이터가 들어감
System.out.println("n은 5보다 크다");
}
// if문 블럭 내의 수행문이 한 줄이면 {} 블럭 생략 가능
if(n < 5)
System.out.println("n은 5보다 작다");
System.out.println("프로그램 종료");
}
}
IfMain02
생성public class IfMain02 {
public static void main(String[] args) {
java.util.Scanner input = new java.util.Scanner(System.in); // 입력 시작
System.out.print("정수형 데이터 한 개 입력 : ");
int a = input.nextInt();
// if~else문
if(a % 2 == 1)
System.out.println("홀수입니다!!");
else
System.out.println("짝수입니다!!");
input.close(); // 입력 종료(메모리 자원 정리); if~else문 바로 위(입력 작업은 이미 종료됨)에 위치해도 관계없으나, 코드가 복잡해질 때의 오류를 방지하기 위해 가장 밑에 위치시킴
}
}
IfMain03
생성public class IfMain03 {
public static void main(String[] args) {
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("정수 한 개 입력 : ");
int a = input.nextInt();
// 다중 if문
if(a > 0)
System.out.println(a + "는 양수입니다.");
else if(a < 0)
System.out.println(a + "는 음수입니다.");
else
System.out.println("0입니다.");
input.close();
}
}
IfMain04
생성public class IfMain04 {
public static void main(String[] args) {
java.util.Scanner input = new java.util.Scanner(System.in);
int score;
char grade;
System.out.print("성적 입력 : ");
score = input.nextInt();
if(score > 100 || score <0)
grade = '?';
else if(score >= 90)
grade = 'A';
else if(score >= 80)
grade = 'B';
else if (score >= 70)
grade = 'C';
else if (score >= 60)
grade = 'D';
else
grade = 'F';
System.out.printf("성적 : %d\n등급 : %c\n", score, grade);
input.close();
}
}
IfMain05
생성public class IfMain05 {
public static void main(String[] args) {
int a = 10;
float b = 10.0f;
if(a == b) { // a가 float으로 형변환됨
System.out.println("10과 10.0f는 같다!");
}
char c = '0';
int d = 0;
if(c != d) { // '0'이 int로 형변환되면 48이 됨
System.out.println("'0'과 0은 같지 않다.");
}
char e = 'A';
int f = 65;
if(e == f) { // A의 ASCII 코드 값(='A'의 int 형변환 결과 값)은 65임
System.out.println("'A'와 65는 같다.");
}
}
}
IfMain06
생성public class IfMain06 {
public static void main(String[] args) {
/*
* [실습]
* 정수 두 개를 입력받아서 변수에 저장하고 두 값 중 최댓값과 최솟값을 구하여 출력하시오.
* 단, 입력받은 두 수가 같을 경우 "두 수는 같다."라고 출력하시오.
*/
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("첫 번째 정수 : ");
int a = input.nextInt();
System.out.print("두 번째 정수 : ");
int b = input.nextInt();
input.close();
if(a>b)
System.out.printf("최댓값 : %d, 최솟값 : %d\n", a, b);
else if(a<b)
System.out.printf("최댓값 : %d, 최솟값 : %d\n", b, a);
else
System.out.println("두 수는 같다.");
}
}
SwitchMain01
생성public class SwitchMain01 {
public static void main(String[] args) {
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("정수형 데이터 입력 : ");
int a = input.nextInt();
switch(a) { // int인 a를 인자값으로 사용
case 1:
System.out.println("1 입력");
break; // {} 블럭 탈출; 생략시 다음 케이스의 수행문까지 실행함
case 2:
System.out.println("2 입력");
break;
case 3:
System.out.println("3 입력");
break;
default: // if문에서의 else 역할; 마지막이므로 break 생략 가능
System.out.println("1, 2, 3이 아닌 숫자가 입력됨");
}
input.close();
}
}
SwitchMain02
생성public class SwitchMain02 {
public static void main(String[] args) {
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("계절 입력 : ");
String season = input.next(); // next() 함수로 문자열을 입력받아 season에 전달
switch(season) { // String인 season을 인자값으로 사용
case "봄":
System.out.println("꽃이 피는 계절");
break;
case "여름":
System.out.println("뜨거운 태양의 계절");
break;
case "가을":
System.out.println("산들바람이 부는 계절");
break;
case "겨울":
System.out.println("눈이 내리는 계절");
break;
default:
System.out.println("계절을 입력하지 않았습니다.");
}
input.close();
}
}
SwitchMain03
생성public class SwitchMain03 {
public static void main(String[] args) {
/*
* [실습]
* 정수 2개를 입력 받고 산술 연산자(+,-,*,/,%)를 입력받아 연산을 수행한 결과를 출력하시오.
* [출력 예시]
* 첫 번째 수 : 7
* 연산자 : +
* 두 번째 수 : 5
* 7 + 5 = 12
*/
java.util.Scanner input = new java.util.Scanner(System.in);
int result = 0;
System.out.print("첫 번째 수를 입력하세요 : ");
int first = input.nextInt();
System.out.print("연산자를 입력하세요 : ");
String operator = input.next();
System.out.print("두 번째 수를 입력하세요 : ");
int second = input.nextInt();
switch(operator) {
case "+":
result = first + second; break; // 줄바꿈은 세미콜론으로 구분하기 때문에 수행문과 break가 한 줄이어도 됨
case "-":
result = first - second; break;
case "*":
result = first * second; break;
case "/":
if(second==0) { // 0으로 나누는 연산을 수행하려 하면 자바에서 오류가 발생하므로, 이를 안내하고 정상 종료시키기 위함
System.out.println("\n0으로 나눌 수 없습니다.");
System.exit(0); // 프로그램을 종료하지 않으면 출력문 수행시 변수 초기화가 안 되어 오류가 발생함
}
result = first / second; break;
case "%":
if(second==0) {
System.out.println("\n0으로 나눌 수 없습니다.");
System.exit(0);
}
result = first % second; break;
default:
System.out.println(); // 단순 줄바꿈
System.out.println("연산자를 잘못 입력하였습니다.");
System.exit(0); // 프로그램 종료; 잘못된 연산자 입력한 경우에 출력문이 수행되지 않도록 하기 위함
}
System.out.printf("\n%d %s %d = %d\n", first, operator, second, result);
input.close();
}
}
ForMain01
생성public class ForMain01 {
public static void main(String[] args) {
for(int i=1;i<=5;i++) {
System.out.println(i);
}
System.out.println("========");
// for문 블럭 내 수행문이 한 줄이면 {} 블럭 생략 가능; 조건문은 생략하는 것이 일반적이나, 반복문은 생략하지 않는 것이 일반적임
for(int i=1;i<=5;i++)
System.out.println(i);
System.out.println("프로그램 종료");
}
}
ForMain02
생성public class ForMain02 {
public static void main(String[] args) {
for(int i=5;i>=1;i--) {
System.out.print(i + "\t");
}
System.out.println("\n========");
for(int i=0;i<=10;i+=2) {
System.out.print(i + "\t");
}
System.out.println("\n========");
for(int i=0;i<=10;i++) {
if(i%2==0) {
System.out.print(i + "\t");
}
}
}
}
ForMain03
생성public class ForMain03 {
public static void main(String[] args) {
int sum = 0;
for(int i=1;i<=100;i++) {
// if(i%2==0) // 짝수의 합 구하기
sum += i; // sum = sum + i
}
System.out.println("1부터 100까지의 합 = " + sum);
}
}
ForMain04
생성 올바른 입력을 계속 요청하도록 개선된 구구단public class ForMain04 {
public static void main(String[] args) {
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("단을 입력하세요 : ");
int dan = input.nextInt();
System.out.println(dan + "단");
System.out.println("========");
if(dan<=9&&dan>=1) {
for(int i=1;i<=9;i++) {
System.out.println(dan + " * " + i + " = " + dan * i); // 곱셈은 덧셈보다 우선순위가 높기 때문에 소괄호 없어도 곱셈 먼저 실행하고 문자열로 연결함
}
}
else if(dan>9){
for(int i=1;i<=dan;i++) {
System.out.println(dan + " * " + i + " = " + dan * i);
}
}
else {
System.out.println("양의 정수를 입력하세요.");
}
input.close();
}
}