[JAVA]4일차(변수와 자료형 코딩/원의 넓이와 둘레구하기/삼각형의 넓이 구하기)

정효진·2021년 7월 19일
0

Developer Study

목록 보기
4/47
post-thumbnail

7월19일(월)

-> 3일차에 배운 것 코드로 썼음.
9-6동안 수업 시간 너무 긴거 아닌가 했는데 전혀 아니었고, 타자치다보면 수업끝나있었다.
타자연습 많이 해야겠다.. 여기 치는거도 다 타자로 쳐서 작성해야겠다..
왜이렇게 .이랑 "이런거 오타가 나는지 빨리 촤라라락 멋지게 치고싶다고~!!
복습하자.💪
Test003~Test015

3일차에서 이어서 코드(변수와 자료형)

/* ==============================
■■■자바 기본 프로그래밍■■■
- 변수와 자료형
=================================*/
//tab하면 들여써지고 s+tab하면 들여써짐

public class Test003
{
	public static void main(String[] args)
	{
		//변수 선언
		int a;
		//변수 초기화(변수 a에 10 대입)
		a = 10;
		//변소 선언 및 초기화(선언과 대입을 한 번에 처리)
		int b = 20;
		//변수 선언
		int c;

		//출력문을 통해 확인(테스트)
		//System.out.println(c);
		//에러 발생(컴파일 에러)

		//연산 및 처리
		c = a + b;
		System.out.println(c);
		//결과 : 30
/*----------------------여기부터 오늘시작-----------------------*/
		//결과출력
		//System.out.println(a b c);
		//에러 발생(컴파일 에러)

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

		//테스트
		System.out.println(1+2);
		//결과 : 3

		//테스트
		System.out.println("1" + 2);
		//결과 : 12

		//테스트
		System.out.println(a + " " + b + " " + c);
		//결과 : 10 20 30

		System.out.println("a 의 값은 " +a+" 입니다.");
		System.out.println("b 의 값은 2"+b+" 입니다.");
		System.out.println("a 와 b 를 더한 결과값 : "+c);
		/*
		a 의 값은 10 입니다.
		b 의 값은 20 입니다.
		a 와 b 를 더한 결과값 : 30

		+연산자를 사용하는 과정에서 피연산자 중 문자열이 포함되어 있을 경우
		문자열 결합 연산자로 활용되며
		처리 결과는 문자열의 형태로 반환된다.
		*/


		System.out.println(1+2);//산술연산자 +
		System.out.println("1"+2);//문자연결합연산자+
		System.out.println(1+"2");//문자연결합연산자+
		System.out.println("1"+"2");//문자연결합연산자+
		/* 결과
		3
		12
		12
		12
		*/
	}
}

변수명 규칙

  • *$ 와 _ 를 제외한 다른 특수문자는 변수의 이름으로 활용할 수 없다.
  • 대소문자 구분하고 길이제한 없다.
  • 숫자로 시작해서는 안된다.
  • 변수명 한글은 안된다.
  • 키워드(예약어) 사용 안된다.

printf() / format() -> 기능은 똑같음

  • JDK 1.5 부터 지원되는 메소드
  • System.out.printf("○ + ○ = ○", 10, 20, 30); 이런식으로 템플릿처럼 만들어서 쓰는게 printf()
  • 개행 \n, %n 둘 다 사용 가능
System.out.printf("%d + %d = %d\n", 10, 20, 30); // \n : 개행
System.out.printf("%d + %d = %d%n", 10, 20, 30); // %n : 개행
  • 소수점 이하 두 번째 자리까지 표현(세번째부터 반올림 발생)
System.out.printf("%d 와 %.4f\n", 10, 3.141592);
//결과 :  10 와 3.1416	
  • System.out.println("b 의 결과 : " + a); 이런식으로 쓰는 것은 한줄 띄기 자동 println()
int a;
a = 10;
System.out.println("a 의 결과 : " + a);
//결과 : a 의 결과 : 10

형 변환

		int a;
		a = 10;
		System.out.println("a 의 결과 : " + a);

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

		short c;
        

-> 이러면 컴파일 에러남!
why? -> 기본적으로 자료형이 큰 것을 작은 것에 못넣음(int>short) -> 그래서 형 변환을 해야함!!
c = (short)a;

		int a;
		a = 10;
		System.out.println("a 의 결과 : " + a);

		int b = 20;
		System.out.println("b 의 결과 : " + b);
            
                //명시적인 형 변환(강제 형 변환) 
		c = (short)a;
		//c = (short)a;
		//c = a;
		//a가 가지고 있는 데이터를 short형으로 형 변환을 수행한 후 변수 c에 대입한다.

		// 00000000 00000000 00000000 00001010 -> int 형 변수 a -> 10
		//			↓
		//			↓형 변환
		//			↓
		//00000000 00001010 ->이렇게 바뀌는 것

		System.out.println("c 의 결과 : " + c);

접미사 활용

long형

//long d = 10000000000; //백억 컴파일 에러
long d = 10000000000L;
  • long형은 숫자(상수) 뒤에 L 또는 l을 붙여 상수를 표현한다.
    즉, 약 21억 이상되는 상수에는 데이터 뒤에 접미사를 꼭 붙여줄 수 있도록 한다.
  • 우측부터 읽어서 상수인줄 알고 int형태로 저장해서 에러남 L붙여줘야함

8진수형

int e = 030;
System.out.println("e 의 결과 : " + e);
//e 의 결과 : 24
  • 접두어 0이 붙어버리면 8진수 형으로 변환이 됨

16진수형

int f = 0xa6;
System.out.println("f 의 결과 : " + f);
// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15인데 10부터는 표현x니까
// 1 2 3 4 5 6 7 8 9 a b c d e f로 표현됨

//f 의 결과 : 166

float형

//float g = 0.0;  //컴파일 에러
float g = 0.0f;
System.out.println("g 의 결과 : " + g);
//결과 : g 의 결과 : 0.0
  • 컴파일 에러남 왜냐 우측부터 보니까 0.0이니까 double로 들어가는데 float으로 들어가서 접미사f 또는 F

boolean(1바이트)

boolean a = true;
boolean b;

int c = 10, d = 5; 
b = c < d
System.out.println("b : " + b);
//결과 : b : false
--------------------------------
b = c > d
System.out.println("b : " + b);
//결과 : b : true

char(2바이트)

char ch1, ch2, ch3;
int a; // check~!!
ch1 = 'A'; //"A"로 표현하면 안된다!
ch2 = \n;
ch3 = '대';
a = ch1; //-> 에러남 

왜 에러날까?

  • 자동형변환(A문자형으로 보이지만 실제로는 A(65)a(97)의 아스키코드 값이 담김)
a = (int)ch1;
System.out.println("ch1 : " + ch1);
System.out.println("ch2 : " + ch2);
System.out.println("ch3 : " + ch3);
System.out.println("a : " + a);
/* 결과 값
ch1 : A
ch2 :

ch3 : 대
a : 65
계속하려면 아무 키나 누르십시오 . . .
*/

double(8바이트)

double a = 1/2;
System.out.println("double a : " + a);
double b = 1/2.0
System.out.println("double b : " + b);
/*실행값
double a : 0.0
double a : 0.5
*/
  • 나눗셈 연산과 관련하여 피연사자 중 실수가 포함되어 있다면 연산은 실수 기반의 연산이 수행되어 결과값 또한 실수 형태로 반환된다.

👩‍💻퀴즈 - 원의 넓이와 둘레

Q. 원의 넓이와 둘레를 구하는 프로그램을 구현하시오.

int r = 10;
final double PI = 3.141592;  //final 키워드 check~!!
double area, length;

area = r * r * PI;
length = r * 2 * pI;

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

/* 결과
원의 넓이 = 314.1592
원의 둘레 = 62.83184
계속하려면 아무 키나 누르십시오 . . .
*/

final 키워드

  • 변수나 메서드 또는 클래스가 ‘변경 불가능’하도록 만든다.
  • 변수를 상수화~!!! 값을 항상 고정해줌
  • 이렇게 파이널 하고나면 나중에 pi = 314.1592 해도 값 변하지 않음
  • 변수명은 대문자로해서 구분!

BufferedReader 클래스

  • BufferedReader:Scanner와 유사.
  • 스캐너보다 속도가 빠르기 때문에 많은양의 데이터를 처리할 때 유리하다.
  • BufferedReader 클래스를 사용할 때는 import를 사용해줘야한다.
  • 밑에 두개 코트 같은 것임 상황에 따라서 두가지 모두 사용할 줄 알아야함!
//자바에 키보드를 연결하는 부분
//키보드는 각각의 바이트 스트림으로 입력됨
//키보드를 통해 눌려오는 특정 입력값을 가져오는 것이 System.in
//문자를 읽어오는 장치(바이트를 입력해서 문자로 변환(키보드가 넘겨주는 키값을)) 우측부터 읽기
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
InputStreamReader isr = new InputstreamReader(System.in);
Buffered br = new BufferedReader(isr)
  • BufferedReader 클래스를 이용해서 원의 넓이, 둘레 구하기
  • readLine()시 리턴값을 String으로 고정
  • String이 아닌 다른타입으로 입력을 받을려면 형변환을 꼭 해주어야한다는 점
  • Integer.parseInt(br.readLine());
  • readLine()시 예외처리를 꼭 해주어야한다는 점: throws IOException
    - throws 이용 시 import java.io.IOException; 해줘야함!
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Test011
{ 
	public static void main(String[] args) throws IOException  //입출력 문제가 발행하면 조치를 취하는(throws 던져) 명령어
    
        {
              //BufferedReader 인스턴스 생성
              BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

              int r;
              final double PI = 3.14;
              double a, b;
              String name;

              System.out.print("이름을 입력하세요 : "); //check~!! print사용 println 은 이름쓰기도 전에 띄어쓰기됨!!!
              name = br.readLine(); //String 기본값이기 때문에 형변환 안해도됨!

              System.out.println("원의 반지름 입력 : ");
              r = Integer.parseInt(br.readLine()); //형변환!!

              a = r * r * PI;
              b = r * 2 * PI;

              //println 과 printf 비교
              System.out.println(">> 넓이 :" + a);
              System.out.println(">> 둘레 : " + b);

              System.out.printf(">> 넓이 : %.2f\n", a);
              System.out.printf(">> 둘레 : %.2f\n", b);
    
    }
       
}
/*결과 값
이름을 입력하세요 : 정효진
원의 반지름 입력 : 25
>> 넓이 : 1962.5
>> 둘레 : 157.0
>> 넓이 : 1962.50
>> 둘레 : 157.00
계속하려면 아무 키나 누르십시오 . . .
*/

👩‍💻퀴즈 - 삼각형의 넓이

Q. 삼각형의 밑변의 길이와 높이를 사용자로부터 입력받아 이 삼각형의 넓이를 구하는 프로그램을 구현한다.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
//import java.lang.*;
public class Test012
{
	public static void main(String[] args)
    {
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        int bottmLength, height;
        double area;
        
        System.out.println("■ 삼각형의 넓이 구하기 ■");
        
        System.out.println("- 상각혐의 밑변 입력 : ");      
        bottomLength = Integer.parseInt(br.readLine());
        
        System.out.println("- 삼각형의 높이 입력 : ")
        height = Integer.parseInt(br.readLine());
        
        area = bottomLength * height / 2.0 //area가 실수 기반이니까 2.0으로 입력해야함!
        
        System.out.println(); // 매개변수 없음 -> 개행
        // System.out.print(); ->매개변수 없음 -> 에러
        
        System.out.printf(">> 밑변이 %d, 높이가 %d인 삼각형의 넓이 : %.2f\n", bottomLength, height, area);
        
    }
}
/*결과 값
■ 삼각형의 넓이 구하기 ■
- 상각혐의 밑변 입력 : 5
- 삼각형의 높이 입력 : 3

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

헝가리언표기법

  • 자료형이나 변수의 특성을 알수 있는 접두어를 사용하여 표기하는 방법
  • 이름만봐도 형을 알 수 있게!

String strName;
int nKor, nEng, nMat;
int nTot;
  • temp 변수 사용하기
// 사용자로부터 이름, 국어점수, 영어점수, 수학점수 를 입력받아
// 이름과 총점을 출력하는 프로그램을 구현한다.

// 실행 예)
// 이름을 입력하세요 : 정효진
// 국어 점수 입력 : 90
// 영어 점수 입력 : 80
// 수학 점수 입력 : 70

// ====[결과]====
// 이름 : 정효진
// 총점 : 240
// 계속하려면 아무 키나 누르세요...
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

String strName;
int nKor, nEng, nMat;
int nTot;
String strTemp;

System.out.print("이름을 입력하세요 : ");
strName = br.readLine();

System.out.print("국어 점수 입력 : ");
strTemp = br.readLine();
nKor = Integer.parseInt(strTemp);

System.out.print("영어 점수 입력 : ");
strTemp = br.readLine();
nEng = Integer.parseInt(strTemp);

System.out.print("수학 점수 입력 : ");
strTemp = br.readLine();
nMat = Interger.parseInt(strTemp);

nTot = nKor + nEng + nMat;

System.out.println("\n====[결과]====");
System.out.printf("이름 : %s\n", strName);
System.out.printf("총점 : %d\n", nTot);
/* 결과 값
이름을 입력하세요 : 정효진
국어 점수 입력 : 90
영어 점수 입력 : 80
수학 점수 입력 : 70

====[결과]====
이름 : 정효진
총점 : 240
계속하려면 아무 키나 누르십시오 . . .

*/
profile
개발새발

0개의 댓글

관련 채용 정보