JAVA 1주차

Organ·2023년 8월 27일
0

JAVA

목록 보기
1/14

간단한 1주차 코멘트

월요일에 학원을 가서 1시간 정도 ot를 받고 학원 출결할 때 사용하는 지문을 등록하고 왔다. 화요일(첫 수업)에 자리는 자기 마음대로 앉는 방식이어서 나는 맨 뒤에 앉았었는데 뒤쪽에서도 잘 보이지만 앞에서 보는게 조금 더 나을 것 같아서 앞자리로 옮겼는데 지금 생각해보면 잘 옮긴 것 같다. 나는 유데미에서 자바 강의를 60%정도 듣고 왔고 솔직히 지식같은 것 보단 사람들 만나고 프로젝트하는 경험을 쌓으려고 학원에 왔는데 내 생각보다 자세하게 설명해주는 부분이 많아 이 부분은 굉장히 마음에 든다. 예를 들자면 자바 설치후 환경 변수 path를 추가하는 과정에 있어 보통 자바 설치 이런식으로 검색해서 블로그를 따라하면 링크를 복사해서 추가하는 과정만 나와 있는데 수업에서는 왜 추가해줘야 하는지 이런 점들을 설명해줘서 개인적으로 예전에 가졌던 궁금증이 해결되는 기분이었다. 최근에 수료해서 취업한 내 친구말을 따르면 내 친구가 배웠던 강사님은 자료를 다 배포하는 스타일 이었다면 내가 배우고 있는 강사님은 타이핑을 스크린에 해주고 학생들이 따라 치면서 정리하는 식으로 수업을 진행하는데 각자 장단점이 있는 것 같다. 전자의 경우는 아무래도 시간 절약이 되겠지만 후자의 경우에는 타이핑을 직접 함으로써 자기가 원하는 방식으로 정리하기 용이하고 타이핑하면서 자연스럽게 읽게 되는 그런 점이 있다. 아직은 입문 단계라 이해하기 어려운 것은 거의 없지만 좀 어려운 부분을 만난다면 이런 방식이 좋을 것 같다. 어쨋든 앞으로 주차 별로 공부한 내용들을 주말에 복습하면서 간단한 코멘트와 함깨 올려볼 생각이다.


2일차

자바의 개요 및 특징(001)

// 단일행 주석문(Comment) : 라인 단위 주석문

/*
다중행
주석문
처리
→ 블럭 단위 주석문
*/

// - 클래스의 이름은 『Test001』
// - 자바 프로그램에서 클래스의 이름은 첫글자를 대문자로 시작
// - 당분간 실습을 진행하는 과정에서
// 자바 프로그램 시작할 때 클래스(class)와 main() 메소드를
// 기본적으로 작성할 수 있도록 할 것
// - 소스 코드 저장 시 클래스 이름과 동일한 파일 이름으로 저장할 것.
// 단, 이 때 확장자는 『.java 』
public class Test001
{
	// main 이라는 이름을 가진 함수(메소드)
	// 자바 인터프리터가 처음 찾는 메소드
	public static void main(String[] args)
	{
		//
		// 앞으로 우리가 당분간 코딩해야 하는 영역
		//

		System.out.println("Welcome to Java");
		System.out.println("First Java Program");

		// 이름() → 함수, 메소드

		// 이름() → 함수 또는 메소드 정의
		//{
		//	 ...
		//}

		//이름(); → 함수 또는 메소드 호출

		// ※ 자바에서의 함수는 독립적으로 존재할 수 없고
		//	  클래스에 정의되는 형태로 만들어져야 한다.

		// 『System.out.println("Welcome to Java");』
		//  →println(); 메소드 호출

		// 『System』 이라는 도구 상자 안의
		// 『out』이라는 도구 상자 안의
		// 『println()』 이라는 도구 즉, 메소드
		// → System 클래스의 out 객체의 println() 메소드

	}
}
// 실행 결과

/*
Welcome to Java
First Java Program
계속하려면 아무 키나 누르십시오 . . .
*/

자바 기본 프로그래밍(002)

  • 자바 소스코드 입력 및 컴파일 실습

  • 실행 및 관찰

    public class Test002
    {
    	public static void main(String[] args)
    	{
    		System.out.println("안녕하세요");
    		System.out.println("aaa입니다.");
    		System.out.println("오늘은 8월 23일 입니다.");
    
    		System.out.print("반갑습니다.");
    		System.out.print("화이팅합시다~");
    
    		//『println()』 과 『print()』메소드는
    		// 같은 상자에서 꺼낸 유사한 도구이지만
    		// 이 도구는 서로 다른 도구이며,
    		// 두 메소드의 차이는
    		// 라인 스킵(잘바꿈) 유무
    //실행 결과
    /*
    안녕하세요
    aaa입니다.
    오늘은 8월 23일 입니다.
    반갑습니다.화이팅합시다~계속하려면 아무 키나 누르십시오 . . .
    */
    	}
    }

3일차

자료형 주의점

5 정수
5.0 실수
'5' 문자
"5" 문자열

int num1 = 10000000000(백억); // 오류

long num2 = 10000000000(백억); // 오류
//자바의 연산은 32비트이기 때문에 21억이상의 값을 메모리에 확보하는 과정에서
//변수의 자료형과 상관없이오류가 난다. 그러므로
long num2 = 10000000000l(백억) // 소문자 혹은 대문자 L을 붙여줘야 한다.
float num3 = 12.45; //오류
//실수형 정수도 메모리를 확보할 때 double형의 8바이트공간에 들어간다. 이후 float형에 
float num3 = 12.45f
//대입되는 과정에서 문제가 생기기 때문에 상수뒤에 소문자 혹은 대문자 f를 붙여주면 float형의
//4바이트 메모리공간에 들어가서 오류가 사라지게 된다
//cpu는 int형 데이터의 크기만 연산이 가능하기 때문에 연산 직전에 short형 데이터는 
//int형 데이터로 자동변환 한다. 그 과정을 생략할 수 있도록 int를 선택한다.
//그러나 연산보다 데이터//의 양이 중요한 상황도 존재하므로 그럴 때는 short를 사용한다.

//명시적 형 변환(강제 형 변환)
long num1 = 2147483648l;
int num2 = (int)num1;

int num3 = 100;
long num4 = (long)num3; // long이 int의 상위라서 반드시 필요한 것은 아님

cpu는 int형 데이터의 크기만 연산이 가능하기 때문에 연산 직전에 short형 데이터는 int형 데이터로 자동변환 한다. 그 과정을 생략할 수 있도록 int를 선택한다. 그러나 연산보다 데이터의 양이 중요한 상황도 존재하므로 그럴 때는 short를 사용한다. 상수도 메모리 공간에 저장되는데 변수가 없을때는 임시로 저장되고 사용이 끝나면 소멸한다.(가비지컬랙터가 지나가는 시점)

자동 형 변환 규칙(왼쪽에서 오른쪽으로)
작은 자료형에 있는 데이터는 큰 쪽이랑 연산을 해야 할 때 자바가 자동으로 형 변환을 해준다.


변수와 자료형(003)

public class Test003
{
	public static void main(String[] args)
	{
		//변수 선언
		int a;

		// 변수 a에 10 대입(변수 초기화)
		a = 10;

		//변수 선언 및 초기화(선언과 대입을 한 번에 처리)
		int b = 20;

		//int a = 30; 
		
		//변수 선언
		int c;

		//테스트
		//System.out.println(c);
		// == 에러 발생(컴파일 에러)

		//System.out.println(b);
		// == 20

		//System.out.println(a);
		// == 10

		// 연산 및 처리
		c = a + b;
		// -- c = 10 + b;
		// -- c = 10 + 20;
		// -- c = 30;
		// -- 변수 c에 30 대입하라.

		//결과 출력
		System.out.println(c);
		// == 30

		//결과 출력
		//System.out.println(a b c);
		// == 에러 발생(컴파일 에러)

		// 결과 출력
		//System.out.println(abc);
		// == 에러 발생(컴파일 에러)

		//※ 덧셈 연산자(+)
		//	 피연산자 중 어느 하나라도 문자열 형태의 데이터가 존재한다면
		//   산술연산자로써의 덧셈 연산의 기능을 수행하는 것이 아니라
		//	 문자열 결합 연산자로써의 기능을 수행하게 된다.

		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
		// == 10
		//    20
		//    30

		System.out.println(a + " " + b + " " + c);
		// == 10 20 30

		// 결과 출력
		System.out.println("a의 값은 " + a +"입니다.");
		System.out.println("b의 값은 " + b +"입니다.");
		System.out.println("c의 값은 " + c +"입니다.");
		// - + 연산자를 사용하는 과정에서
		// 피연산자 중 문자열이 포함되어 있을 경우
		// 문자열 결합 연산자로 활용되며
		// 처리의 최종 결과는 문자열의 형태로 반환된다.
		// == a의 값은 10입니다.
		//    b의 값은 20입니다.
		//	  c의 값은 30입니다.

		System.out.println(1+2);        //산술연산자 + 
		System.out.println("1" + 2);	//문자열 결합 연산자 +
		System.out.println(1 + "2");
		System.out.println("1" + "2");

		System.out.println("결과확인 : " + 1 + 2);
		System.out.println("결과확인 : " + (1 + 2));
	
	//실행 결과

/*
30
10
20
30
10 20 30
a의 값은 10입니다.
b의 값은 20입니다.
c의 값은 30입니다.
3
12
12
12
결과확인 : 12
결과확인 : 3
*/
	}
}

키워드 및 식별자(004)

public class Test004
{
	public static void main(String[] args)
	{
		double height = 172.8;
		int age = 25;
		char degree = 'A';

		String name = "aaa";

		//String name = "bbb";
		//-- 스코프 영역 안에서 변수명은 식별자~!!!

		//String #name = "ccc";
		// $와 _를 제외한 다른 특수문자는
		// 변수의 이름으로 활용할 수 없다.
		// 그나마 사용 가능한 이들 특수문자도
		// 함부로 사용하는 것은 고려해야 한다.
		// (일반적으로 규칙을 갖고 사용할 수 있도록 처리)
		
		//long tel = 1012345678; (X)
		//String tel = "01012345678";
		// -- 숫자로만 구성된 데이터라 할지라도
		// 맨 앞에 0이 들어올 수 있는 구조라면
		// 숫자 형태로 처리해서는 안된다.

		String _tel = "01012345678";

		String 주소 = "경기도 남양주시";
		// -- 문법적으로 한글 단어를 변수명으로 사용할 수 있지만
		//    실무적인 측면에서 접근해 본다면
		//    절대로 한글 단어를 변수명으로 사용해서는 안된다.


		// 결과 출력
		System.out.println("name : " + name);
		System.out.println("_tel : " + _tel);
		System.out.println("주소 : " + 주소);
		

	}
}

//실행 결과

/*
name : aaa
_tel : 01012345678
주소 : 경기도 남양주시
*/

printf()(005)

public class Test005
{
	public static void main(String[] args)
	{
		// 변수 선언(메모리 확보) 및 초기화(메모리에 값을 할당)
		int a = 10, b = 5;

		//변수 선언
		int c, d;

		//연산 및 처리
		c = a + b;		//-- a + b 의 결과값을 변수 c에 대입.
		d = a - b;		//-- a - b 의 결과값을 변수 d에 대입.

		//결과 출력 -> 10 + 5 = 15 의 형태
		System.out.println(a + " + " + b + " = " + c);
		//  ==10 + 5 = 15
		//				   숫자 문자열 숫자 문자열 숫자
		//- 자바에서는 서로 다른 자료형의 데이터들끼리도
		//  + 연산이 가능하며
		// 다른 어떤 자료형과 문자열 데이터의 + 연산 결과는 문자열.
		// 즉, 문자열 결합 연산자로써 +
		
		// println() / print() / printf() / format()

		System.out.println("abcd");
		System.out.print("abcd\n");

		// ※ 문자열 영역 안에서 사용되는 \n은 개행(줄바꿈)

		// printf() / format()
		//-- jdk 1.5 부터 지원되는 메소드

		//System.out.printf("○ + ○ = ○", 10, 20, 30);
		System.out.printf("%d + %d = %d\n", 10, 20, 30);     //\n 개행
		System.out.printf("%d + %d = %d%n", 10, 20, 30);	 //%n 개행
		// ==10 + 20 = 30
		//	 10 + 20 = 30
		// -- %d(10진수 정수형)는 서식 지정 옵션
		
		//System.out.printf("○ 와 ○\n", 12, 13);
		System.out.printf("%d 와 %d\n", 12, 13);
		//System.out.printf("○ 와 △\n", 12, 13);
		//System.out.printf("%d 와 %d\n", 12, 13.45);
		// == 에러 발생(런타임 에러)

		System.out.printf("%d 와 %f\n", 12, 13.45);
		// == 12 와 13.450000
		// -- %f -> 실수형 서식 지정 옵션

		System.out.printf("%d 와 %.1f\n", 11, 12.34);
		// == 11 와 12.3
		// -- %.1f -> 소수점 이하 첫 번째 자리까지 표현
		
		System.out.printf("%d 와 %.2f\n", 11, 12.34);
		// == 11 와 12.34
		// -- %.2f -> 소수점 이하 두 번째 자리까지 표현

		System.out.printf("%d 와 %.3f\n", 11, 12.34);
		// == 11 와 12.340
		// -- %.3f -> 소수점 이하 세 번째 자리까지 표현

		System.out.printf("%f%n", 3.141592);
		// == 3.141592

		System.out.printf("%.4f%n", 3.141592);
		// == 3.1416
		// -- %.4f -> 소수점 이하 네 번째 자리까지 표현
		//			  (다섯 번째 자리에서 반올림)
	}
}

// 실행 결과

/*
10 + 5 = 15
abcd
abcd
10 + 20 = 30
10 + 20 = 30
12 와 13
12 와 13.450000
11 와 12.3
11 와 12.34
11 와 12.340
3.141592
3.1416
계속하려면 아무 키나 누르십시오 . . .
*/

4일차

형 변환 / 접미사 활용(006)

public class Test006
{
	public static void main(String[] args)
	{
		int a;
		a = 10;
		System.out.println("a 의 결과 : " + a);
		// == a 의 결과 : 10

		int b = 20;
		System.out.println("b 의 결과 : " + b);
		// == b 의 결과 : 20

		short c;

		// 연산 및 처리(대입 연산)
		//c = a;
		// == 에러 발생(컴파일 에러)
		// -- 기본적으로는 자료형이 작은 것에 큰 것을 담아내지 못한다.
		//	  (자동 형 변환 규칙 위반)

		// 명시적인 형 변환(강제 형 변환)
		c =  (short)a;
		// -- a 가 가지고 있는 데이터를 short 형으로 형 변환을 수행한 후
		//    변수 c 에 대입한다.

		//00000000 00000000 00000000 00001010 -> int 형 a 변수 10
		//					↓ 형 변환
		//00000000 00001010                   -> short 형으로 변환된 10

		// 결과 출력
		System.out.println("c 의 결과 : " + c);
		// == c의 결과 : 10

		//변수 선언 및 초기화
		//int d = 10000000000;		// 백억
		// == 에러 발생(컴파일 에러)

		//long d = 10000000000;	    // 백억
		// == 에러 발생(컴파일 에러)

		long d = 10000000000l;	    // 백억
		// -- 접미사 L이 중요하다.
		//	  long 형은 숫자(상수) 뒤에 L 또는 l을 붙여
		//	  상수를 표현해야 한다.
		//	  즉, 약 21억 이상 되는 정수 형태의 상수에는
		//	  데이터 뒤에 접미사를 꼭 붙여줄 수 있도록 한다.

		// 결과 출력
		System.out.println("d 의 결과 : " + d);
		// == d 의 결과 : 10000000000



		// 변수 선언 및 초기화
		int e = 030;
		
		// 결과 출력
		System.out.println("e 의 결과 : " + e);
		// == e 의 결과 : 24
		// -- 접두사 - -> 8진수
		

		// 변수 선언 및 초기화
		int f = 0xa6;

		// 결과 출력
		System.out.println("f 의 결과 : " + f);
		// == f 의 결과 : 166
		// -- 접두사 0x -> 16진수

		// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
		//					    a  b  c  d  e  f

		// 변수 선언 및 초기화
		//float g = 0;
		//float g = 0.0;
		float g = 0.0f;


		// 결과 출력
		System.out.println("g 의 결과 : " + g);
		// == g 의 결과 : 0.0

	}
}

// 실행 결과

/*
a 의 결과 : 10
b 의 결과 : 20
c 의 결과 : 10
d 의 결과 : 10000000000
e 의 결과 : 24
f 의 결과 : 166
g 의 결과 : 0.0
*/

변수와 자료형 실습 및 테스트 : boolean(007)

public class Test007
{
	public static void main(String[] args)
	{
		// 주요 변수 선언
		boolean a = true;		// boolean a = "true"; (X)
		boolean b;

		int c = 10, d = 5;


		// 연산 및 처리(관계 연산 및 대입 연산)
		b = d > c;
		// b = 5 > 10;
		// b = flase;  관계 연산의 연산 결과는 항상 true/false

		// 결과 출력
		System.out.println("a : " + a);
		System.out.println("b : " + b);
	}
}

// 실행 결과

/*
a : true
b : false
*/

변수와 자료형 실습 및 테스트 : char(008)

public class Test008
{
	public static void main(String[] args)
	{
		// 주요 변수 선언
		char ch1, ch2, ch3;

		int a;			// -- check

		// 연산 및 처리
		ch1 = 'A';
		//ch2 = 'B'
		//ch2 = 'Bb';
		ch2 = '대';
		ch3 = '\n';		// -- 개행 문자

		//a = 10;
		//a = ch1;		// -- check
		a = (int)ch1;	// -- check
		//-- 명시적 형 변환(강제 형 변환)


		// 결과 출력
		System.out.println("ch1 : " + ch1);
		System.out.println("ch2 : " + ch2);
		System.out.println("ch3 : " + ch3);

		System.out.println("a   : " + a);

		// 결과 출력
		//System.out.printf("○ ○ ○ ○%n", ch1, ch2, ch3, a);
		System.out.printf("%c %c %c %d%n", ch1, ch2, ch3, a);
	}
}

/*
ch1 : A
ch2 : 대
ch3 :

a   : 65
A 대
 65
*/

변수와 자료형 실습 및 테스트 : double(009)

  • 나눗셈 연산 실습

    public class Test009
    {
    	public static void main(String[] args)
    	{
    		// 정수와 정수의 나눗셈
    		double a = 1 / 2;
    		// double a = 0; 정수들끼리 연산하므로 몫만 남는다. 이후 자동 형 변환되며 0.0형태로 담긴다
    		System.out.println("double a : " + a);
    		// == double a : 0.0
    
    		double b = (double)1 / 2;
    		// double b = (double)1 / 2;
    		// double b = (double)0;		틀린 예
    		// double b = 0.0;
    
    		//double b = (double)1 / 2;
    		//double b = 1.0 / 2;			나누기는 둘 중 하나만 실수여도 실수로 연산된다.
    		//double b = 0.5;
    
    		System.out.println("double b : " + b);
    		// == double b : 0.5
    
    		double c = 1/2 + 1/2;
    		//double c = 0 + 1/2;
    		//double c = 0 + 0;
    		//double c = 0; 이후 자동 형 변환으로 0.0 결과 출력
    
    		System.out.println("double c : " + c);
    		// == double c : 0.0
    
    		// 피 연산자로 실수가 포함되어 있는 나눗셈 연산
    		double d = 1 / 2.0;
    		System.out.println("double d : " + d);
    		// == double d : 0.5
    		// -- 나눗셈 연산과 관련하여
    		// 피 연산자 중 실수가 하나라도 포함되어 있따면
    		// 연산은 실수 기반의 연산이 수행되며
    		// 결과값 또한 실수 형태로 반환된다.
    
    		double e = 3/2 + 1/2;
    		// double e = 1 + 1/2;
    		// double e = 1 + 0;
    		// double e = 1;
    		System.out.println("double e : " + e);
    		// == double e : 1.0
    
    		double f = 3/2 + 1/2.0;
    		// double f = 1 + 1/2.0;
    		// double f = 1 + 0.5;
    		// double f = 1.5;
    		System.out.println("double f : " + f);
    		// == double f : 1.5
    /*
    // 실행 결과
    double a : 0.0
    double b : 0.5
    double c : 0.0
    double d : 0.5
    double e : 1.0
    double f : 1.5
    */
    	}
    }

원의 넓이와 둘레를 구하는 프로그램을 구현(010)

○ 퀴즈
사전에 부여된 반지름 정보를 통해
원의 넓이와 둘레를 구하는 프로그램을 구현한다
→ 반지름 : 10

실행 예)
넓이 : xxxx
둘레 : xxxx
계속하려면 아무 키나 누르세요...

public class Test010
{
	public static void main(String[] args)
	{
	// 내 풀이
	int 반지름 = 10;
	double 넓이 = 0, 둘레 = 0;

	넓이 = 반지름 * 반지름 * 3.141592;
	둘레 = 반지름 * 2 * 3.141592;

	System.out.println("넓이 : " + 넓이);
	System.out.println("둘레 : " + 둘레);

	// 실행 결과
	// 넓이 : 314.1592
	// 둘레 : 62.83184


	//----------------------------------------------------------
	// 수업

	// 주요 변수 선언
	int r = 10;				// -- 반지름(r)
	//double pi = 3.141592	// -- 원주율(π)
	//final double pi = 3.141592	// -- 원주율(π)
	final double PI = 3.141592;	// -- 원주율(π)
	// -- final 키워드 : 변수의 상수화

	// rainbowColor -> RAINBOWCOLOR -> RAINBOW_COLOR
	// userName -> USERNAME -> USER_NAME
	// applePrice -> APPLEPRICE -> APPLE_PRICE
	
	double area, length;			//-- 원의 넓이, 둘레

	// 연산 및 처리
	// 1. 넓이 연산
	area = r * r * PI; 

	// 2. 둘레 연산
	length = r * 2 * PI;

	// 결과 출력
	//System.out.println("넓이 : " + area);
	//System.out.println("둘레 : " + length);

	// 실행 결과
	// 넓이 : 314.1592
	// 둘레 : 62.83184

	//System.out.printf("넓이 : %.3f%n", area);
	//System.out.printf("둘레 : %.3f%n", length);
	// 실행 결과
	// 넓이 : 314.159
	// 둘레 : 62.832

	//System.out.printf("넓이 : %.3f\n둘레 : %.3f\n", area, length);
	// 실행 결과
	// 넓이 : 314.159
	// 둘레 : 62.832

	}
}

직사각형의 넓이와 둘레를 구하는 프로그램을 구현(011)

○ 퀴즈
직사각형의 넓이와 둘레를 구하는 프로그램을 구현한다.
-> 가로 : 10, 세로 : 20

실행 예)
넓이 : xxx
둘레 : xxx
계속하려면 아무 키나 누르세요...


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

	// 내 풀이
	int a = 10, b = 20;
	int area, length;

	area = a * b;
	length = (a + b) * 2;

	System.out.println("넓이 : " + area);
	System.out.println("둘레 : " + length);
	// 실행 결과
	// 넓이 : 200
	// 둘레 : 60
	//----------------------------------------------

	// 수업
	// 주요 변수 선언
	int a = 10, b = 20;
	int x, y;
	// 연산 및 처리
	x = a * b;
	y = (a + b) * 2;

	// 결과 출력
	System.out.println("넓이 : " + x);
	System.out.println("둘레 : " + y);

	System.out.printf("넓이 : %d\n", x);
	System.out.printf("둘레 : %d\n", y);

	}
}

자바 기본 입출력 : BufferedReader 클래스(012)

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

------------------------------------
	문자 입력을 읽어들이는 장치
									  ---------------------
										바이트 -> 문자 번역기
															 ----------
															 바이트 입력값
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Test012
{
	public static void main(String args[]) throws IOException
	{
		// 키보드 장착(생성)	
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		//------------------------------------
		//		문자 입력을 읽어들이는 장치
		//									   ---------------------
		//										바이트 -> 문자 번역기
		//															 ----------
		//															바이트 입력값

		// 주요 변수 선언
		int r;						//-- 반지름
		final double PI = 3.141592; //-- 원주율 -> 변수의 상수화 final
		double a, b;				//-- 원의 넓이, 둘레



		// 연산 및 처리

		// 1. 사용자에게 안내 메세지 출력

		//System.out.println("원의 반지름 입력 : ");
		System.out.print("원의 반지름 입력 : ");
		
/*
		br.readLine();//문자열의 형태로 읽어온다.

		r = br.readLine();

		r = "2546";
		"2546" -> parseInt("2546") -> 2546
		"80" -> parseInt("80") -> 80

		Integer.parseInt("80") -> 80
		-- 매개변수로 넘겨받은 문자열 데이터를 정수형으로 변환
		단, 이 때 넘겨받은 문자열 데이터는 숫자 형태여야 한다.
											--------
											(Number Format)
*/
		// 2. 사용자가 입력한 값을 받아와 반지름 변수 r 에 담아내기
		r = Integer.parseInt(br.readLine());
/*
		r = Integer.parseInt("2546");
		r = 2546;
		-- 사용자가 입력한 값을 br 즉, BufferedReader 의 readline()
		   메소드를 활용하여 문자열 형태로 읽어들인 후
		   그 값을 Integer.parseInt()를 통해 숫자형(정수형)으로 변환한 후
		   정수 형태의 반지름 변수 r 에 담아내기
 */
 		// 3. 넓이 및 둘레 계산(연산)
		//		각각 변수 a 와 b 에 담아내기
		a = r * r * PI;
		b = r * 2 * PI;

 		// 결과 출력
		// 변수 a 와 b 에 담아있는 값 출력
		System.out.println(">> 원의 넓이 : " + a);
		System.out.println(">> 원의 둘레 : " + b);

		System.out.printf(">> 반지름이 %d인 원의 넓이는 %.2f이며,\n" , r, a);
		System.out.printf(">> 반지름이 %d인 원의 둘레는 %.2f 입니다.\n", r, b);
		// == 원의 반지름 입력 : 45
		//	>>넓이 : 6361.723800000001
		//	>>둘레 : 282.74328

		// >> 반지름이 45인 원의 넓이는 6361.72이며,
		// >> 반지름이 45인 원의 둘레는 282.74 입니다.
	}
}

// 실행 결과
/*
원의 반지름 입력 : 50
>> 원의 넓이 : 7853.9800000000005
>> 원의 둘레 : 314.1592
>> 반지름이 50인 원의 넓이는 7853.98이며,
>> 반지름이 50인 원의 둘레는 314.16 입니다.
*/

삼각형의 넓이를 구하는 프로그램을 구현(013)

실행 예)
■ 삼각형 넓이 구하는 프로그램 ■

  • 삼각형의 밑변 입력 : 5
  • 삼각형의 높이 입력 : 3

    밑변이 5, 높이가 3인 삼각형의 넓이 : xxx
    계속하려면 아무키나 누르세요

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Test013
{
	public static void main(String[] args) throws IOException
	{
//		내 풀이
/*
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int a = 0, b = 0; // a 밑변 b 높이
		double c = 0;	  // c 넓이

		System.out.println("■ 삼각형 넓이 구하는 프로그램 ■");

		System.out.print("- 삼각형의 밑변 입력 : ");
		a = Integer.parseInt(br.readLine());

		System.out.print("- 삼각형의 높이 입력 : ");
		b = Integer.parseInt(br.readLine());

		System.out.println();
		c = (double)a * b / 2;

		System.out.printf(">> 밑변이 %d, 높이가 %d인 삼각형의 넓이 : %.2f\n", a, b, c);
*/		
//실행 결과

/*
■ 삼각형 넓이 구하는 프로그램 ■
- 삼각형의 밑변 입력 : 5
- 삼각형의 높이 입력 : 3

>> 밑변이 5, 높이가 3인 삼각형의 넓이 : 7.50
계속하려면 아무 키나 누르십시오 . . .
*/
//			-------------------------------------
			
			// 주요 변수 선언
			
			// BufferedReader 인스턴스 생성
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			// 밑변, 높이
			int underLength, height;	//-- 밑변, 높이
			double area;				//-- 넓이

			// 연산 및 처리
			// 1. 사용자에게 안내 메세지 출력
			System.out.println("■ 삼각형 넓이 구하는 프로그램 ■");
			//System.out.println("- 삼각형의 밑변 입력 : "); 같은 창에서 입력하기 위해 print사용
			System.out.print("- 삼각형의 밑변 입력 : ");

			// 2. 사용자가 입력한 데이터(문자열!!!!)를 정수형태로 반환한후
			//	  변수 underLength에 답아내기
			underLength = Integer.parseInt(br.readLine());

			// 3. 다시 사용자에게 안내 메세지 출력
			System.out.print("- 삼각형의 높이 입력 : ");

			// 4. 사용자가 입력한 데이터(문자열!!!)를 정수 형태로 변환한 후
			//	  변수 height에 담아내기
			height = Integer.parseInt(br.readLine());

			// 5. 삼각형의 넓이 구하는 연산 처리
			// area = underLength * height / 2;
			//		정수형		 정수형	  정수형
			//        정수 기반 연산(몫을 취하고 나머지는 버림)
			area = underLength * height / 2.0;  // check
			//		정수형		정수형	  실수형 -> 실수 기반 연산
			
			// 실수 자료형이 결과값으로 나오는 과정에서
			// 실수 기반의 연산이 필요한 상황이다.
			// 정수형 2가 아닌, 실수형으로 2.0으로 나눗셈 연산을 수행하게 되면
			// 이 연산은 실수 기반으로 처리된다.

			// area = (double)underLength * height / 2;
			// area = underLength * (double)height / 2;
			// area = (double)(underLength * height) / 2;  
			// area = (double)(underLength * height / 2);  -- X

			// 결과 출력
			System.out.println();	// 개행
			// System.out.print();	   매개변수 없이 사용하면 컴파일 에러

			System.out.printf(">> 밑변이 %d, 높이가 %d인 삼각형의 넓이 : %.2f\n", underLength, height, area);




	}
}
/*
■ 삼각형 넓이 구하는 프로그램 ■
- 삼각형의 밑변 입력 : 5
- 삼각형의 높이 입력 : 3

>> 밑변이 5, 높이가 3인 삼각형의 넓이 : 7.50
계속하려면 아무 키나 누르십시오 . . .
*/

0개의 댓글