프로그래밍/자바(JAVA)

[1일차] 복습 & 자바 기본 익히기(p.18~)

aSpring 2021. 1. 13. 23:33
728x90
728x90

2021/01/13 - [공부/자바(java) 융합개발자 2차(복습)] - [자바 기초] 이지스퍼블리싱 Do it! 공부단 신청

2021/01/13 - [공부/자바(java) 융합개발자 2차] - [자바 기초] 21일차 - 반복문(for, while, do ~ while)

2021/01/12 - [공부/자바(java) 융합개발자 2차] - [자바 기초] 20일차 일지 - Eclipse에서 Hello 출력, 변수, if문

Do it! 자바 프로그래밍 입문
국내도서
저자 : 박은종
출판 : 이지스퍼블리싱 2018.08.06
상세보기

 


그림으로 더 쉽게~ Do it! 자바!

01. 자바 프로그래밍 시작하기

"1부터 100까지 더해 줘!" -> 소스 코드 -> 컴파일러 -> OK!

     사람의 언어         -> 프로그래밍 언어 -> 번역  -> 실행

 

노력을 이기는 재능은 없고
노력을 외면하는 결과도 없다.
- 이창호 9단 -

첫째마당 자바 기본 익히기

01. 자바 프로그래밍 시작하기 : 컴퓨터에게 명령하는 방법을 배운다.

01-1. 프로그래밍과 자바

01-2. 자바 개발 환경 설치하기

01-3. 이클립스로 첫 프로그램 만들기

02. 변수와 자료형

03. 자바의 여러 가지 연산자

04. 제어 흐름 이해하기


01-1. 프로그래밍과 자바

 


 

 

자바는 패키지 단위로 이루어진다.

이 패키지 안에 class를 만든다.

만든 클래스에서 코딩을 한다.

 

자바는 대소문자를 구분하며 문장의 끝에는 반드시 ; 세미콜론을 찍어주어야 한다.

 

package com.day01;

public class Exam01 {

}

기본적인 시작 화면이고 { } 속에 시작점을 표시해 주어야 하는데

public static void main(String[] args); {

}

 

이걸 적어주고 여기 안에 코딩을 한다.

package com.day01;

public class Exam01 {
	public static void main(String[] args); {

	}
}

 

Hello 출력해보기

package com.day01;

public class Exam01 {

	public static void main(String[] args) {
		System.out.println("Hello");
	}

}

작성한 class 우클릭 > Run As > Java Application

눌러서 실행

 

 

src > com.day01 > Exam01.java

Public class Exam01

클래스 이름이 동일해야 한다!(대소문자 구별)

 

이름 수정 : 마우스 우클릭 > Refactor > Rename

 

코딩은 메모장에서도 가능하지만 일일히 다 맞춰줘야 하기 때문에 불편하다 -> Eclipse를 사용한다.

Eclipse는 코드 작성을 편하게 해 준다.

 

println에서 ln은 개행의 역할을 한다-> HTML에서 <br>을 넣어주는 것과 같다.

 

다음을 출력해보자(print 3번 이용)Hello자바 공부자바 공부

package com.day01;

public class Exam01 {

	public static void main(String[] args) {
		System.out.println("Hello");
		System.out.print("자바 공부");
		System.out.print("자바 공부");
	}

}

 

주석

package com.day01;

public class Exam01 {
	public static void main(String[] args) {
    	// 나는 한 줄 주석을 쓸 때 사용해요.
        /*
        * 나는 여러 줄 주석을 쓸 때
        * 사용하지요
        * 아주 편리하답니다~!
        */ 
    }
}

실행시켜 보면 주석 부분은 나오지 않는다.

 

자바는 변수의 유형을 명확하게 정의해주어야 한다.

- age라는 변수에 20을 저장해보자.

package com.day01;

public class Exam01 {

	public static void main(String[] args) {
		
		int age = 20;
		System.out.println(age);
	}
}

 

System.out.println(_______);

(_________)이 속에 변수를 넣어주면 변수에 저장된 값 ex 20을 출력해 주고

"" 속에 변수명을 넣으면 문자 그대로 age를 출력해준다.

package com.day01;

public class Exam01 {

	public static void main(String[] args) {
		
		int age = 20;
		System.out.println(age);
		System.out.println("age");
	}

}

 

정수형 변수 선언

int : 정수형

String : 문자형

 

age라는 변수에 20을 저장하고

addr이라는 변수에 부산을 저장해보자.

package com.day01;

public class Exam01 {

	public static void main(String[] args) {
		
		int age = 20;
		String addr = "부산";
		
		System.out.println(age);
		System.out.println(addr);
	}
}

다음과 같이 출력하라.

나이 : 20

주소 : 부산

package com.day01;

public class Exam01 {

	public static void main(String[] args) {
		
		int age = 20;
		String addr = "부산";
		
		System.out.println("나이 : " + age);
		System.out.println("주소 : " + addr);
	}
}

"문자"와 변수를 연결하려면 + 를 사용하면 된다.

System.out.println("출력하고싶은 문자" + 변수명);

 

name이라는 변수를 선언하고 홍길동을 할당하고 다음과 같이 출력하여라.

이름 : 홍길동

package com.day01;

public class Exam01 {

	public static void main(String[] args) {
		
		String name = "홍길동";
		
		System.out.println("이름 : " + name);
	}
}

 

변수 a, b를 선언하고 각각 15와 8을 할당한 뒤 두수의 합을 출력하여라.

package com.day01;

public class Exam01 {

	public static void main(String[] args) {
		
		int a = 15;
		int b = 8;
		
		System.out.println("두 수의 합 : " + a + b);
	}
}

결과가 이렇게 나오는 이유는 "두 수의 합"이라는 문자 때문에 + 의 역할이 덧셈이 아니라

문자와 변수를 연결시켜주는 역할로 인식한 것

따라서 "두 수의 합 : " + "15" + "8" 을 연결시켜서 

 두 수의 합 :  158

이렇게 된 것.

 

이럴 때는 정수형 변수끼리 더해질 수 있도록 (a+b) 형태로 적어주면 된다

package com.day01;

public class Exam01 {

	public static void main(String[] args) {
		
		int a = 15;
		int b = 8;
		
		System.out.println("두 수의 합 : " + (a + b));
	}
}

만약 문자 없이 쓴다면

package com.day01;

public class Exam01 {

	public static void main(String[] args) {
		
		int a = 15;
		int b = 8;
		
		System.out.println(a + b);
	}
}

 알아서 덧셈을 해서 결과를 출력해준다.

 

다음과 같이 출력하여라.

a-b = 7

a*b = 120

a/b = 1

package com.day01;

public class Exam01 {

	public static void main(String[] args) {
		
		int a = 15;
		int b = 8;
		
		System.out.println("a + b = " + (a + b));
		System.out.println("a * b = " + a * b);
		System.out.println("a + b = " + a / b);
	}
}

곱셈과 나눗셈은 덧셈보다 우선하므로 ()를 해줄 필요는 없다

 

a를 b로 나눈 나머지를 구하여라

package com.day01;

public class Exam01 {

	public static void main(String[] args) {
		
		int a = 15;
		int b = 8;
		
		System.out.println("a % b = " + a % b);
	}
}

7

%는 나머지를 출력한다.

 

반지름 r을 5로 지정하고

원의 넓이를 출력하시오

원의 넓이 = 반지름 * 반지름 * 원주율

원주율 : 3.14

package com.day01;

public class Exam01 {

	public static void main(String[] args) {
		
		int r = 5;
		
		System.out.println(r*r*3.14);
	}
}

int r은 정수형이지만 부동소수점 3.14가 더 크기 때문에 자동으로 실수형으로 출력된다.

 

pi 변수를 선언하고 3.14를 할당하여라.

3.14는 실수형이므로 정수형 int로 선언된 변수 pi에 할당될 수 없다.

그러므로 실수가 들어갈 pi는 double형으로 선언해 주어야 한다.

 

package com.day01;

public class Exam01 {

	public static void main(String[] args) {
		
		int r = 5;
		double pi = 3.14;
		
		System.out.println(r*r*pi);
	}
}

78.5

 

78.5

결과는 같으나 pi값처럼 변하지 않는 값 앞에는 final을 붙여주고 변수명도 PI처럼 대문자로 잡아준다.

 

컴퓨터 입장에서는 5라는 수는 101이다. 물론 앞에 0이 더있다.

 

따라서 

정수 int : 4bye(1바이트 -> 8비트)

실수 double : 8바이트

       float : 4바이트

 

double, float은 둘 다 실수이지만 실수를 잡을 때 따로 말이 없다면 기본은 double

 

float이 실수형인 것을 알았으니 pi를 선언하고 3.14를 할당해보자.

에러 발생 -> float은 수 뒤에 f를 붙여주어야 한다.

결과는 78.5로 동일하다.

 

float형 f 변수에 5 할당

package com.day01;

public class Exam01 {

	public static void main(String[] args) {
		
		float f = 5;
		
		System.out.println(f);
	}
}

5.0

-> 실수형으로 잡아줬기 때문에 결과값은 자동으로 5.0과 같이 실수형으로 출력된다.

 

 

package com.day01;

public class Exam01 {

	public static void main(String[] args) {
		
		float f = 5f;
		
		System.out.println(f);
	}
}

5 뒤에 f를 붙여 주어도 결과는 동일하게 5.0

 

그러나 이렇게 하면 에러가 난다

package com.day01;

public class Exam01 {

	public static void main(String[] args) {
		
		float f = 5.0f;
		int num = 10;
		
		f=num;
		
		System.out.println(f);
	}
}

실수형 변수 f에 정수형 변수 num의 값 10을 집어넣고 f를 출력하면

10.0의 형태로 출력된다.

 

f는 float형, num은 int형으로 유형이 다르고 둘 다 동일하게 4바이트 크기이나

실수 > 정수(정수보다 실수를 더 큰 범위로 보기 때문에 이렇게 더 큰 범위로 집어넣는 것은 가능하다)

자동으로 형태가 변환된다.

 

반대로

정수형 변수에 실수를 집어넣으려고 하면 에러가 난다.

 

 

다시 위에서 

f=num; 을 했을 때 정수 10이 실수 10.0으로 자동 형변환이 된다.

num=f;를 해주고 싶다면 명시적 형 변환을 시켜주면 된다.

정수형 변수 num에 실수형 변수 f의 값을 넣고 싶으면

실수형 f를 (int)f 로 적어주어 명시적으로 형변환을 시켜준다.

 

Exam02 a변수에 49를 할당하고, a가 50보다 크면 "50보다 크다", 작으면 "50보다 작다"를 출력하여라.

package com.day01;

public class Exam02 {

	public static void main(String[] args) {
		int a = 49;
		
		if (a>50) {
			System.out.println("50보다 크다");
		} else {
			System.out.println("50보다 작다");
		}
	}
}

if (조건) {

      조건이 true인 경우 시행할 내용

} else {

      조건이 false인 경우 시행할 내용

}

 

a가 짝수면 짝수, 홀수면 홀수라고 출력하라.

package com.day01;

public class Exam02 {

	public static void main(String[] args) {
		int a = 49;
		
		if (a%2==0) {
			System.out.println("짝수");
		} else {
			System.out.println("홀수");
		}
	}
}

홀수

 

= 은 할당의 의미이므로 같은가를 묻고 싶다면 == 로 써야 한다.

 

다중 if문

변수 a에 51을 할당하고

a가 50보다 크면 "50보다 크다", 100보다 크면 "100보다 크다", 200보다 크면 "200보다 크다", 그 외에는 "else"라고 출력

package com.day01;

public class Exam02 {

	public static void main(String[] args) {
		int a = 51;
		
		if (a > 50) {
			System.out.println("50보다 크다");
		} else if (a > 100) {
			System.out.println("100보다 크다");
		} else if (a > 200) {
			System.out.println("200보다 크다");
		} else {
			System.out.println("else");
		}
	}
}

50보다 크다

 

개행을 하고 싶다 -> 

System.out.println();

만 적어주면 된다.

 

a에 202를 할당하고 50보다 크면 "50보다 크다",

100보다 크면 "50보다 크다", "100보다 크다",

200보다 크면 "50보다 크다", "100보다 크다", "200보다 크다"

가 모두 출력되게 하라

package com.day01;

public class Exam02 {

	public static void main(String[] args) {
		int a = 202;
		
		if (a > 50) {
			System.out.println("50보다 크다");
		} if (a > 100) {
			System.out.println("100보다 크다");
		} if (a > 200) {
			System.out.println("200보다 크다");
		} else {
			System.out.println("else보다 크다");
		}
	}
}

50보다 크다
100보다 크다
200보다 크다

 

a가 202일 때

a가 50보다 큰지, 50보다 크고 100보다 작은지, 200보다 큰지, 그 외인지?

package com.day01;

public class Exam02 {

	public static void main(String[] args) {
		int a = 202;
		
		if (a > 50) {
			System.out.println("50보다 크다");
		} if (a > 50 && a < 100) {
			System.out.println("100보다 크다");
		} if (a > 200) {
			System.out.println("200보다 크다");
		} else {
			System.out.println("else보다 크다");
		}
	}
}

50보다 크다
200보다 크다

 

&&는 and와 같다.

 

Exam 03 입력한 수가 짝수인지 홀수인지를 출력하시오.

package com.day01;

import java.util.Scanner;

public class Exam03 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("숫자를 입력하세요");
		int a = sc.nextInt();   // 정수를 입력받아오는 함수
		
		if (a%2 == 0) {
			System.out.println("짝수");
		} else {
			System.out.println("홀수");
		}
		

	}

}

숫자를 입력하세요
29
홀수

 

import 'Scanner' 를 해줘야 에러가 나이 않음

 

만약 Console 창이 보이지 않는다면

Window > Show View > Console 클릭

이름과 나이를 입력받아 나이가 20세 이상이면 입장 가능,

15세 이상 20세 미만이면 부모님과 동반 입장, 15세 미만이면 입장 불가능이라고 출력하라

package com.day01;

import java.util.Scanner;

public class Exam03 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("이름을 입력하세요");
		String name = sc.next(); //문자를 입력받음
		
		System.out.println(name + "씨의 나이를 입력하세요");
		int age = sc.nextInt(); //정수를 입력받음
		
		if (age >= 20) {
			System.out.println(name + "씨는 " + age + "세로 입장 가능");
		} else if (age >= 15) {
			System.out.println(name + "씨는 " + age + "세로 부모님과 동반 입장");
		} else {
			System.out.println(name + "씨는 " + age + "세로 입장 불가능");
		}
	}
}

 

만약 else if 말고 그냥 if와 else만 쓰고 싶다면

package com.day01;

import java.util.Scanner;

public class Exam03 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("이름을 입력하세요");
		String name = sc.next(); //문자를 입력받음
		
		System.out.println(name + "씨의 나이를 입력하세요");
		int age = sc.nextInt(); //정수를 입력받음
		
		if (age >= 20) {
			System.out.println(name + "씨는 " + age + "세로 입장 가능");
		} if (age >= 15) {
			System.out.println(name + "씨는 " + age + "세로 부모님과 동반 입장");
		} else {
			System.out.println(name + "씨는 " + age + "세로 입장 불가능");
		}
	}
}

 

이렇게 써주면 두줄 다 나오므로 XX

 

package com.day01;

import java.util.Scanner;

public class Exam03 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("이름을 입력하세요");
		String name = sc.next(); //문자를 입력받음
		
		System.out.println(name + "씨의 나이를 입력하세요");
		int age = sc.nextInt(); //정수를 입력받음
		
		if (age >= 20) {
			System.out.println(name + "씨는 " + age + "세로 입장 가능");
		} if (age >= 15 && age <20) {
			System.out.println(name + "씨는 " + age + "세로 부모님과 동반 입장");
		} if(age < 15 ) {
			System.out.println(name + "씨는 " + age + "세로 입장 불가능");
		}
	}
}

이름을 입력하세요
로니
로니씨의 나이를 입력하세요
22
로니씨는 22세로 입장 가능

 

이렇게 써줘야 함

else if를 써주는 것이 가장 깔끔함

 

Exam04 점수와 커트라인을 입력받아 합격인지 불합격인지 출력하시오.

package com.day01;

import java.util.Scanner;

public class Exam04 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("점수와 커트라인을 입력해 주세요");
		int score = sc.nextInt();
		int cut = sc.nextInt();
		
		if (score >= cut) {
			System.out.println(score + "점으로 커트라인 " + cut + "점 이상이므로 합격");
		} else {
			System.out.println(score + "점으로 커트라인 " + cut + "점 미만이므로 불합격");
		}
	}
}

점수와 커트라인을 입력해 주세요
20 50
20점으로 커트라인 50점 미만이므로 불합격

 

또는

package com.day01;

import java.util.Scanner;

public class Exam04 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("점수를 입력해 주세요");
		int score = sc.nextInt();
		System.out.println("커트라인을 입력해 주세요");
		int cut = sc.nextInt();
		
		if (score >= cut) {
			System.out.println(score + "점으로 커트라인 " + cut + "점 이상이므로 합격");
		} else {
			System.out.println(score + "점으로 커트라인 " + cut + "점 미만이므로 불합격");
		}
	}
}

점수를 입력해 주세요
50
커트라인을 입력해 주세요
40
50점으로 커트라인 40점 이상이므로 합격

 

점수가 5의 배수입니까?

package com.day01;

import java.util.Scanner;

public class Exam04 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("점수를 입력해 주세요");
		int score = sc.nextInt();
		
		if (score%5==0) {
			System.out.println(score + "는 5의 배수입니다.");
		} else {
			System.out.println(score + "는 5의 배수가 아닙니다.");
		}
	}
}

점수를 입력해 주세요
20
20는 5의 배수입니다.

 

점수를 입력해 주세요
3
3는 5의 배수가 아닙니다.

 

점수가 3의 배수입니까?

package com.day01;

import java.util.Scanner;

public class Exam04 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("점수를 입력해 주세요");
		int score = sc.nextInt();
		
		if (score%3==0) {
			System.out.println(score + "는 3의 배수입니다.");
		} else {
			System.out.println(score + "는 3의 배수가 아닙니다.");
		}
	}
}

점수를 입력해 주세요
33
33는 3의 배수입니다.

 

점수를 입력해 주세요
55
55는 3의 배수가 아닙니다.

 

Sys까지 입력하고 Ctrl + SpaceBar를 입력하면 저렇게 자동완성을 할 수 있다.

 

Exam05 : 이름, 국어, 영어, 수학 점수를 입력받아 학생의 총점과 평균을 출력하기

package com.day01;

import java.util.Scanner;

public class Exam05 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("학생의 이름을 입력하세요");
		String name = sc.next();
		
		System.out.println(name + "학생의 국어, 영어, 수학 점수를 입력하세요");
		int kor = sc.nextInt();
		int eng = sc.nextInt();
		int mat = sc.nextInt();
		
		int sum = kor + eng + mat;
		int avg = sum/3;
		
		System.out.println(name + " 학생 총점 : " + sum + ", 평균 : " + avg);
	}
}

학생의 이름을 입력하세요
로닝구
로닝구학생의 국어, 영어, 수학 점수를 입력하세요
35 84 52
로닝구 학생 총점 : 171, 평균 : 57

 

여기서 평균은 실수가 나올 수 있으므로 평균은 float형으로 선언

package com.day01;

import java.util.Scanner;

public class Exam05 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("학생의 이름을 입력하세요");
		String name = sc.next();
		
		System.out.println(name + "학생의 국어, 영어, 수학 점수를 입력하세요");
		int kor = sc.nextInt();
		int eng = sc.nextInt();
		int mat = sc.nextInt();
		
		int sum = kor + eng + mat;
		float avg = sum/3;
		
		System.out.println(name + " 학생 총점 : " + sum + ", 평균 : " + avg);
	}
}

학생의 이름을 입력하세요
로닝구
로닝구학생의 국어, 영어, 수학 점수를 입력하세요
34 58 44
로닝구 학생 총점 : 136, 평균 : 45.0

 

 

노란 표시는 없던 변수를 새로 생성해서 그렇다

 

학생의 국어, 영어, 수학 점수를 입력하고 평균이 90점 이상이면 A학점, 80점 이상이면 B학점, 70점 이상이면 C학점, 나머지는 F학점으로 처리하라.

 

package com.day01;

import java.util.Scanner;

public class Exam05 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("학생의 이름을 입력하세요");
		String name = sc.next();
		
		System.out.println(name + "학생의 국어, 영어, 수학 점수를 입력하세요");
		int kor = sc.nextInt();
		int eng = sc.nextInt();
		int mat = sc.nextInt();
		
		int sum = kor + eng + mat;
		float avg = sum/3;
		
		if (avg>=90) {
			System.out.println(name + " 학생 평균 : " + avg + "으로 A학점");
		} else if (avg>=80) {
			System.out.println(name + " 학생 평균 : " + avg + "으로 B학점");
		} else if (avg>=70) {
			System.out.println(name + " 학생 평균 : " + avg + "으로 C학점");
		} else {
			System.out.println(name + " 학생 평균 : " + avg + "으로 F학점");
		}
	}
}

학생의 이름을 입력하세요
로니
로니학생의 국어, 영어, 수학 점수를 입력하세요
88 68 32
로니 학생 평균 : 62.0으로 F학점

 

학생의 이름을 입력하세요
로닝2
로닝2학생의 국어, 영어, 수학 점수를 입력하세요
98 54 88
로닝2 학생 평균 : 80.0으로 B학점

 

위의 예제를 변형해서 System.out.println();을 한 번만 써서 나타내어라.

package com.day01;

import java.util.Scanner;

public class Exam05 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("학생의 이름을 입력하세요");
		String name = sc.next();
		
		System.out.println(name + "학생의 국어, 영어, 수학 점수를 입력하세요");
		int kor = sc.nextInt();
		int eng = sc.nextInt();
		int mat = sc.nextInt();
		
		int sum = kor + eng + mat;
		float avg = sum/3;
		String grade;
		
		if (avg>=90) {
			grade = "A학점";
		} else if (avg>=80) {
			grade = "B학점";
		} else if (avg>=70) {
			grade = "C학점";
		} else {
			grade = "F학점";
		}
		System.out.println(name + " 학생 평균 : " + avg + "으로 " + grade);
	}
}

학생의 이름을 입력하세요
꺄르륵
꺄르륵학생의 국어, 영어, 수학 점수를 입력하세요
98 55 48
꺄르륵 학생 평균 : 67.0으로 F학점

 

Exam 06 두 수를 입력받아 큰 수가 얼마이고, 작은 수가 얼마이며, 두 수의 차이를 나타내시오

package com.day01;

import java.util.Scanner;

public class Exam05 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("숫자 두 개를 입력하세요");
		int no1 = sc.nextInt();
		int no2 = sc.nextInt();
		
		int max=0;
		int min=0;
		
		if (no1 > no2) {
			max = no1;
			min = no2;
		} else if (no1<no2) {
			max = no2;
			min = no1;
		} else {
			System.out.println("두 수는 같다");
		}
		System.out.println("큰 수 : " + max + ", 작은 수 :" + min + " 으로 두 수의 차 : " + (max-min));
	}
}

숫자 두 개를 입력하세요
25 25
두 수는 같다
큰 수 : 0, 작은 수 :0 으로 두 수의 차 : 0

 

숫자 두 개를 입력하세요
87 55
큰 수 : 87, 작은 수 :55 으로 두 수의 차 : 32

 

숫자 두 개를 입력하세요
24 88
큰 수 : 88, 작은 수 :24 으로 두 수의 차 : 64

 

package com.day01;

import java.util.Scanner;

public class Exam05 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("숫자 두 개를 입력하세요");
		int no1 = sc.nextInt();
		int no2 = sc.nextInt();
		
		int max=0;
		int min=0;
		
		if (no1 > no2) {
			max = no1;
			min = no2;
			System.out.println("큰 수 : " + max + ", 작은 수 :" + min);
		} else if (no1<no2) {
			max = no2;
			min = no1;
			System.out.println("큰 수 : " + max + ", 작은 수 :" + min);
		} else {
			System.out.println("두 수는 같다");
		}
		System.out.println("두 수의 차 : " + (max-min));
	}
}

숫자 두 개를 입력하세요
33 58
큰 수 : 58, 작은 수 :33
두 수의 차 : 25

 

숫자 두 개를 입력하세요
88 88
두 수는 같다
두 수의 차 : 0

 

숫자 두 개를 입력하세요
98 54
큰 수 : 98, 작은 수 :54
두 수의 차 : 44

 

선생님 답

package com.day01;

import java.util.Scanner;

public class Exam05 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("숫자 두 개를 입력하세요");
		int max = sc.nextInt();
		int min = sc.nextInt();
		
		if (max < min) {
			int tem = max;
			max = min;
			min = tem;
		} 
		System.out.println("큰 수 : " + max + ", 작은 수 :" + min);
		System.out.println("두 수의 차 : " + (max-min));
	}
}

숫자 두 개를 입력하세요
88 99
큰 수 : 99, 작은 수 :88
두 수의 차 : 11

 

숫자 두 개를 입력하세요
54 88
큰 수 : 88, 작은 수 :54
두 수의 차 : 34

 

숫자 두 개를 입력하세요
20 20
큰 수 : 20, 작은 수 :20
두 수의 차 : 0

 

첫 번째 입력받은 값 max가 더 크면 그대로 계산하면 되고

두 번째 입력받은 값 min이 더 크면 if문으로 걸러서 임시 변수 int tem를 선언해 첫 번째 입력받은 값 max를

tem에 임시로 저장하고 max에는 두 번째로 입력받은 값인 min을 넣고 min에는 tem에 임시로 저장하고 있던, 첫 번째로 입력 받았던 값을 집어 넣어 두 개를 서로 바꿔주면 된다.

 

class 생성 시

public static void main(String[] args); 를 체크해주면 자동으로 써져서 나옴

 

Exam07 

다음과 같이 출력되게 하라 

 

1.자바 2.데이터베이스 3.안드로이드 4.기타

번호 선택 >> 

1
자바공부
2
데이터베이스공부
3
안드로이드공부
4
기타공부
그 외
공부합시다
package com.day01;

import java.util.Scanner;

public class Exam07 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("1.자바 2.데이터베이스 3.안드로이드 4.기타");
		System.out.println("번호 선택>>");
		int no = sc.nextInt();
		
		if (no==1) {
			System.out.println("자바 공부");
		} else if(no==2) {
			System.out.println("데이터베이스 공부");
		} else if(no==3) {
			System.out.println("안드로이드 공부");
		} else if(no==4) {
			System.out.println("기타 공부");
		} else {
			System.out.println("공부합시다");
		}

	}

}

1.자바 2.데이터베이스 3.안드로이드 4.기타
번호 선택>>
1
자바 공부

 

1.자바 2.데이터베이스 3.안드로이드 4.기타
번호 선택>>
88
공부합시다

 

위의 예제를 switch문을 사용해서 표현하여라

package com.day01;

import java.util.Scanner;

public class Exam07 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("1.자바 2.데이터베이스 3.안드로이드 4.기타");
		System.out.println("번호 선택>>");
		int no = sc.nextInt();
		
		switch(no) {
		case 1 : System.out.println("자바 공부");
		case 2 : System.out.println("데이터베이스 공부");
		case 3 : System.out.println("안드로이드 공부");
		case 4 : System.out.println("기타 공부");
		default : System.out.println("공부합시다");
		}
	}
}

1.자바 2.데이터베이스 3.안드로이드 4.기타
번호 선택>>
3
안드로이드 공부
기타 공부
공부합시다

 

걸리는 지점부터 아래가 다 실행된다. 걸리는 지점까지만 실행되고 빠져나가려면 break;를 걸어주어야 함

package com.day01;

import java.util.Scanner;

public class Exam07 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("1.자바 2.데이터베이스 3.안드로이드 4.기타");
		System.out.println("번호 선택>>");
		int no = sc.nextInt();
		
		switch(no) {
		case 1 : System.out.println("자바 공부"); break;
		case 2 : System.out.println("데이터베이스 공부"); break;
		case 3 : System.out.println("안드로이드 공부"); break;
		case 4 : System.out.println("기타 공부"); break;
		default : System.out.println("공부합시다");
		}
	}
}

1.자바 2.데이터베이스 3.안드로이드 4.기타
번호 선택>>
3
안드로이드 공부

 

switch문은 다중 if문을 대신할 수 있다.

 

case1: 이렇게 하면 안되고

case 1:  이렇게 한 칸 띄워줘야 한다


Exam05를 switch문으로 변경하기

package com.day01;

import java.util.Scanner;

public class Exam05 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("학생의 이름을 입력하세요");
		String name = sc.next();
		
		System.out.println(name + "학생의 국어, 영어, 수학 점수를 입력하세요");
		int kor = sc.nextInt();
		int eng = sc.nextInt();
		int mat = sc.nextInt();
		
		int sum = kor + eng + mat;
		float avg = sum/3;
		String grade;
		
		if (avg>=90) {
			grade = "A학점";
		} else if (avg>=80) {
			grade = "B학점";
		} else if (avg>=70) {
			grade = "C학점";
		} else {
			grade = "F학점";
		}
		System.out.println(name + " 학생 평균 : " + avg + "으로 " + grade);
	}
}

switch문으로 변경

package com.day01;

import java.util.Scanner;

public class Exam07 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("학생의 이름을 입력하세요");
		String name = sc.next();
		
		System.out.println(name + "학생의 국어, 영어, 수학 점수를 입력하세요");
		int kor = sc.nextInt();
		int eng = sc.nextInt();
		int mat = sc.nextInt();
		
		int sum = kor + eng + mat;
		float avg = sum/3;
		String grade;
		
		switch((int)avg/10) { // float형이나 > < 이런게 올 수 없다
		case 10 :                        // 어차피 아래로 내려가서 A학점이 되므로 그냥 둠
		case 9 : grade = "A학점"; break;
		case 8 : grade = "B학점"; break;
		case 7 : grade = "C학점"; break;
		default : grade = "F학점";
		}
		System.out.println(name + " 학생 평균 : " + avg + "으로 " + grade);
	}
}

 

 

학생의 이름을 입력하세요
김길동
김길동학생의 국어, 영어, 수학 점수를 입력하세요
100 100 100
김길동 학생 평균 : 100.0으로 A학점

 

학생의 이름을 입력하세요
김로니
김로니학생의 국어, 영어, 수학 점수를 입력하세요
20 80 55
김로니 학생 평균 : 51.0으로 F학점

 

연산자

package com.day01;

public class Exam08 {
	public static void main(String[] args) {
		int n1 = 5;
		System.out.println("n1 : " + n1);
	}
}

n1 : 5

 

package com.day01;

public class Exam08 {
	public static void main(String[] args) {
		int n1 = 5;
		System.out.println("n1 : " + n1);
		int n2 = ++n1;
		System.out.println("n2 : " + n2);
	} // n1 : 5, n2 : 6이 출력될 것
}

n1 : 5
n2 : 6

 

실행하기 전 결과를 예상해보기

package com.day01;

public class Exam08 {
	public static void main(String[] args) {
		int n1 = 5;
		System.out.println("n1 : " + n1);
		int n2 = ++n1;
		System.out.println("n2 : " + n2);
		int n3 = n1++;
		System.out.println("n3 : " + n3);
		System.out.println("n1 : " + n1);
	}
}

예상

n1 : 5

n2 : 6

n3 : 6

n3 : 7

정답

 

전위연산자, 후위 연산자

package com.day01;

public class Exam08 {
	public static void main(String[] args) {

		int num1 = 7;
		int num2 = --num1;
		int num3 = num1--;
		
		System.out.println("num1 : " + num1);
		System.out.println("num2 : " + num2);
		System.out.println("num3 : " + num3);
	}
}

결과 예측해보기

num1 : 5

num2 : 6

num3 : 6

정답

 

package com.day01;

public class Exam08 {
	public static void main(String[] args) {

		int a =50, b = 3;
		int c;
		
		a++;
		++b;
		c = a++ + ++b;
		
		System.out.println("a : " + a); 
		System.out.println("b : " + b); 
		System.out.println("c : " + c); 
	}
}

a :  52

b :  5

c :  56

정답

 

package com.day01;

public class Exam08 {
	public static void main(String[] args) {
				
		int aa=10, bb=3;
		int cc;
		
		--aa;
		bb++;
		cc = aa-- + ++b;
		
		System.out.println("aa : " + aa);
		System.out.println("bb : " + bb);
		System.out.println("cc : " + cc);
	}
}

aa : 8

bb : 5

cc : 14

 

cc = --aa, ++aa -> 전위 연산자 -> 결과값을 대입

cc = aa--, bb++ -> 기존의 값을 먼저 대입한 뒤 값이 바뀜

 

Exam 09. 두 수와 연산자 하나를 입력 받아 계산을 수행하는 Switch문 만들기

package com.day01;

import java.util.Scanner;

public class Exam09 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("두 수와 연산자 하나를 입력하세요");
		int a = sc.nextInt();
		int b = sc.nextInt();
		String p = sc.next();
		
		switch(p) {
			case "*" : System.out.println(a + "*" + b + "=" + a*b); break;
			case "+" : System.out.println(a + "+" + b + "=" + (a+b)); break;
			case "-" : System.out.println(a + "-" + b + "=" + (a-b)); break;
			case "/" : System.out.println(a + "/" + b + "=" + a/b); break;
			case "%" : System.out.println(a + "%" + b + "=" + a%b);  break;
			default : System.out.println("연산자 입력 오류");
		}
				
	}

}

두 수와 연산자 하나를 입력하세요
10 8 =
연산자 입력 오류

 

두 수와 연산자 하나를 입력하세요
8 9 *
8*9=72

 

Exam 10 자바 기본 데이터형 8가지 p.49

package com.day01;

public class Exam10 {

	public static void main(String[] args) {
		int a = 10; //정수 4바이트
		long c = 10000000L; //정수 8바이트
		float f = 0.15f; //실수 4바이트
		double d = 0.456; //실수 8바이트
		
		boolean b = true; //true, false
		char ch = 'a'; // 문자 하나, 2byte ' ' (작은 따옴표)
		//char t = "d"; // XX ""은 문자열에 사용해야 함
		char ch1 = 'A';
		
		byte bb; // bb는 1byte의 크기를 가질 수 있다.
		short sh; // sh는 2byte의 크기를 가질 수 있다.
		//---------------------------------------------
	}

}

 

 

package com.day01;

public class Exam10 {

	public static void main(String[] args) {

		String str="";
		int aa=10;
		
		if(aa==10) {
			str = "10이다";
		} else {
			str = "10이 아니다";
		}
		System.out.println(str);
	}

}

 이렇게 표현해도 되고 삼항연산자로 표현해도 된다

package com.day01;

public class Exam10 {

	public static void main(String[] args) {

		String str="";
		int aa=10;
		
		str = (aa==10) ? "10이다" : "10이 아니다";
		System.out.println(str);
	}

}

삼항 연산자 표현

str = (조건) ? "참" : "거짓" ;

조건이 참일 때 str에 "참"에 해당하는 내용이 할당되고, 거짓이면 "거짓"에 해당하는 내용이 할당됨

 

Exam11. 1~99 사이의 정수 하나를 입력받아 십 단위 3, 6, 9 검사, 일 단위 3, 6, 9 검사
-> 3, 6, 9가 2개이면 박수 짝짝

-> 3, 6, 9가 1개이면 박수 짝

-> 없으면 박수 없음 출력

ex) 36 -> 박수 짝짝

ex) 46 -> 박수 짝

ex) 52 -> 박수 없음




728x90
728x90