학원 4일차 - Java

·2021년 4월 1일
0
post-thumbnail

2021.04.01

  • System.out.println("안녕하\b세요"); 이클립스에서 콘솔에 정상적으로 안찍힐때
    • 콘솔창에서 마우스 우측버튼 - Preferences - 하단ASCII control 체크

  • alt + shift + y (이클립스 자동개행 단축키)
  • 어떤 특수한 역할을 하는 문자를 이스케이프하고 싶으면, 보통 같은 문자를 한번 더 적는다.

    • 자바( \ ) -> \ \
    • 자바( % ) -> %%
    • SQL( ' ) -> ''
  //프로그래밍 시장에서 자바가 차지하는 점유율은 45%입니다.
  int java = 45;
  		
  System.out.printf("프로그래밍 시장에서 차지하는 점유율은 %d%%입니다.", java);
  • 형식 문자 기능

    • 출력할 데이터의 위치를 지정하는 요소
  • %숫자d

    • 출력할 내용물의 최소 너비

    • %d,%f,%c,%b,%s 모두 사용 가능

    • +면 우측정렬, -면 좌측정렬 (가운데 정렬은 없다.)

  • 수치가 아닌 데이터(연산 안하는 숫자, 문자열 숫자)은 좌측 정렬(중앙정렬)을 사용한다.

  • 수치 데이터 (연산대상이 되는 데이터)은 주로 우측정렬을 사용한다.

System.out.printf("숫자:%d입니다.\n", 10); //숫자:10입니다.
System.out.printf("숫자:%5d입니다.\n", 10); //숫자:   10입니다.
System.out.printf("숫자:%10d입니다.\n", 10); //숫자:        10입니다.

//데이터가 더 크면 공백너비는 무시된다.
System.out.printf("숫자:%5d입니다.\n", 1234567); //숫자:1234567입니다. 
System.out.printf("숫자:%-5d입니다.\n", 10); //숫자:10   입니다
  • %.숫자f
    • 소수점 이하 자릿수 지정
    • %f (float, double)
    • %f(float, double)만 사용
    • 소수점 이하 반올림해서 ~자리까지 출력해라.
//System.out.printf("숫자: %f", 123); -> 에러(int)
System.out.printf("숫자: %f\n", 123.4567); //숫자:123.456700
System.out.printf("숫자: %.4f\n", 123.4567); //숫자: 123.4567
System.out.printf("숫자: %.1f\n", 123.4567); //숫자: 123.5
System.out.printf("숫자: %.0f\n", 123.4567); //숫자: 123
  • %,d
    • 천단위 표시(3자리마다 , 찍어줌)
    • 한국은 100,0000이지만 자바는 무조건 3자리마다 , 찍어줌.
    • %d, f%에서 사용 가능
System.out.printf("숫자:%d\n", 1000000); //숫자:1000000
System.out.printf("숫자:%,d\n", 1000000); //숫자:1,000,000
System.out.printf("숫자:%,f\n", 100000.537); //숫자:100,000.537000
		
		
System.out.println();
		
//1,000,000 - 영문권
//100,0000 - 한국(4자리)

3가지 방법 적용

System.out.printf("숫자: %,10.1f\n", 1234.5678); //숫자:    1,234.6
  • 메뉴판 만들기
    • 숫자출력 - > 반드시!!!!!!!!!!!!!!!단위(원, $ 인지)표기
    • 수치 데이터 (연산대상이 되는 데이터)은 주로 우측정렬을 사용한다.
//메뉴판 - version1
		System.out.println("================================");
System.out.println("         음료가격(단위:원)");
System.out.println("================================");
System.out.printf("1. 콜라: %d\n", 2500);
System.out.printf("2. 스무디: %d\n", 3500);
System.out.printf("3. 쿠키: %d\n", 500);
System.out.printf("4. 마에리카노: %d\n", 12500);		
//메뉴판 - version2
//큰자리수를 기준으로 우측정렬
//천단위로, 찍기
// \t사용
		System.out.println("================================");
System.out.println("         음료가격(단위:원)");
System.out.println("================================");
System.out.printf("1. 콜라:\t\t%,6d\n", 2500);
System.out.printf("2. 스무디:\t%,6d\n", 3500);
System.out.printf("3. 쿠키:\t\t%,6d\n", 500);
System.out.printf("4. 마에리카노:\t%,6d\n", 12500);


에러, Error

오류, 버그(Bug), 예외(Exception) 등등..

  • 컴파일 오류

    • 컴파일 작업할 때 발생하는 오류

    • 컴파일러가 발견 > 문법이 틀렸다!!!

    • 발견 시 모든 컴파일 작업 중단!!!! > 산출물 발생 안함

    • 난이도 가장 낮음 > 발견이 쉽다. > 컴파일러가 알려주니까 > 고치기 쉬움

    • 주로 오타에 의해 발생 > 경력 초반~중반 많이 냄.

    • 빨리 모든 오류 패턴 익숙하게 끔 공부할 것.

//컴파일 안눌렀는데 왜 오류를 발견해줄까?
//이클립스는 javac.exe(컴파일러)와 편집기가 실시간 연동이 된다. 코드 작성 할 때마다 구문 검사가 실시간으로 자동 실행된다.
		   
//int a = 10  ->  ; 안씀 (문법오류)
  • 런타임 오류

    • 프로그램 실행 중 발생하는 오류

    • 컴파일 작업 중에는 발견되지 않았지만 실행 중에 발견이 되는 오류

    • 예외(Exception)

    • 일단, 발견 즉시 수정해야하는 오류 > 발견이 힘들다 > 고치기 힘들다.

    • 돈 + 사람을 이용해 > 검사

    • 게임 -> Closed Alpha > close Beta > Opened Alpha > Open Beta --> 오류 발견을 위해 시험 운영 -->업데이트, 패치배포

int num;
num = 0; //사용자가 키보드로 입력한 숫자라고 생각해보자. -> 경우의 숫자? -> 42억개 중에 숫자 0만 에러
		 
// java.lang.ArithmeticException: / by zero
//나눗셈
//피제수 / 제수
//정수의 나눗셈은 제수가 0이 될 수없다. 
System.out.printf("100 / %d = %d\n", num, 100 / num);
  • 논리 오류

    • 컴파일 성공, 실행 성공 > 결과가 이상함..

    • 발견 어어엄청 힘들다 > 고치기 어어엄청 힘들다.

    • 고치려면 경험 & 처음부터 끝까지 다시 살펴보면서 살펴봐야함..

    • 정신 차리고 작업해야해.. > 실수 우기지 말자..

//10+20를 생각하고 작성 > 결과가 왜이래...?!?!
//에러가 안뜨기 때문에 왜 틀렸는지 내가 몰라..
System.out.println(10 - 20);

Markdown

  • 파일 형식 : .md

  • GitHub로 유명해짐

  • Markup Language

    • HTML, XML 등..
  • Markdown(<-> Markup)

    • HTML 작성을 손쉽게 도와주는 도구
    • 문서 작성 도구

Window + R(run) -> 실행창

notepad, msplorer, mspaint....등등 실행창에 치면 바로 프로그램을 실행할 수 있다.


콘솔 입력

  • System.in.read() 메소드
    • 입력한 문자의 코드값을 반환
    • 1바이트 입력만 받는다. (영어, 숫자만 가능. 한글은 입력 불가능)
    • 사용자에게 키보드 입력을 해주세요.라는 뜻
    • 언제 입력받을지 예측할 수 가 없기때문에 이 구문에서 잠시 프로그램이 멈춤 상태가 된다.
    • 입력 대기 상태를 "Block 걸렸다." 라고 말한다.
    • 입력이 끝났다는 의사 표시를 엔터로 한다.
    • 변수를 생성해 입력받은 데이터를 저장한다. -> 자료형은 정수형
    • 입력받은 데이터를 무조건 숫자로 돌려준다.
    • read()실행 1번당 1개의 문자만 읽는다.

A(65)~Z(90)

a(97)~z(122)

0(48)~9(57)

//요구사항) 사용자에게 문자 1개를 (키보드로)입력받아서 그래도 화면에 출력하시오.
//입력:A
//출력:입력하신 문자는 'A'입니다.
System.out.print("문자 입력: ");

//A(65) -> 1000001으로 저장
int data = System.in.read();
		
//A -> 65
System.out.printf("입력하신 문자는'%d'입니다.\n", data);
//65 -> A
System.out.printf("입력하신 문자는'%c'입니다.\n", data);

System.out.println("프로그램 종료");
  • read()실행 1번당 1개의 문자만 읽기 때문에, 3번 작성했으므로 3개의 문자를 읽을 수 있다.

    • 데이터를 1개만 입력 -> a

    • 키보드에 입력한 데이터가 입력버퍼에 저장된다.
      read()가 입력버퍼에서 데이터를 하나씩 가져간다.

    • read()가 입력버퍼에 있는 a를 읽는다.
      \r\n(엔터)도 입력버퍼안에 들어가있다.
      read()가 \r, \n을 문자로 바꿔서 출력했기 때문에 13,10을 출력했다.

data = System.in.read();
System.out.printf("입력하신 문자는'%d'입니다.\n", data);
System.out.printf("입력하신 문자는'%c'입니다.\n", data);
	
data = System.in.read();
System.out.printf("입력하신 문자는'%d'입니다.\n", data);
System.out.printf("입력하신 문자는'%c'입니다.\n", data);
	
data = System.in.read();
System.out.printf("입력하신 문자는'%d'입니다.\n", data);
System.out.printf("입력하신 문자는'%c'입니다.\n", data);

  • BufferedReader 클래스

    자바는 여러가지 기능을 클래스의 형태로 제공한다.

    JDK를 설치하면 수많은 클래스를 사용할 수 있다.

    자주 쓰는 클래스 몇가지를 빼고 나머지 클래스들은 가져와야(import) 사용 할 수있다.

    • import
//ctrl + shift + o ->import 가져오기, 안쓰는 것도 버려줌

import java.io.IOException;
//창고에서 도구를 가져와 사용하겠습니다. > 클래스 import
import java.io.BufferedReader;
import java.io.InputStreamReader;
//import java.io.*; //*->(wild card - all, 모든 것)
System.out.println("문자 입력: ");
//reader(변수) : 키보드 입력을 받을 수 있는 도구라고 생각하자.
//BufferedReader(자료형)
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

//read()메서드 : 문자코드 값을 반환해준다.
int data = reader.read(); //<-- 사용 거의 안함.
//입력한 라인 전체를 반환한다.
System.out.println(data);
  • readLine() 메소드
    • 사용자 입력값 반환
    • 자료형 : 문자열
    • 입력한 라인 전체를 반환해준다.
String data = reader.readLine();
System.out.println(data);
//요구사항) 이름입력 > 인사하시오.
System.out.print("이름 입력: ");
String name = reader.readLine();
System.out.printf("안녕하세요. %s님\n", name);
//요구사항) 태어난 연도를 입력받아 나이를 출력하시오.
System.out.println("생년 입력: ");
String year = reader.readLine();

2021 - year
2021 - "1995"
//The operator - is undefined for the argument type(s) int, String   
//int age = 2021 - year;
    
//문자열 - > char : x
//"A" -> 'A' : "A".charAt(0);
int iYear = Integer.parseInt(year); // "1995" -> 1995

int age = 2021 - iYear;
	
System.out.printf("당신의 나이는 %d세입니다.\n", age);

문자열 -> 변환 -> 숫자

"문자열" -> byte : Byte.parseByte("문자열");

"문자열" -> short : Short.parseShort("문자열");

"문자열" -> int : Integer.parseInt("문자열");

"문자열" -> long : long.parseLong("문자열");

"문자열" -> float : Byte.parseFloat("문자열");

"문자열" -> double : Byte.parsDouble("문자열");

//요구사항) 숫자(정수)를 2개 입력받아 > + 연산을 하시오. > 연산 과정과 결과를 모두 출력하세요.

System.out.print("첫번째 숫자: ");
String data1 = reader.readLine();

int first = Integer.parseInt(data1);

System.out.print("두번째 숫자: ");
String data2 = reader.readLine();
int second = Integer.parseInt(data2);

System.out.printf("%d + %d = %d\n", first, second, first + second);

//숫자를 입력
String data3 = reader.readLine();
int num3 = Integer.parseInt(data3);

//위의 두줄을 한줄로 입력 가능
int num4 = Integer.parseInt(reader.readLine());
  • Scanner 클래스

연산자(Operator)

  • 피연산자(Operand)를 대상으로 미리 정해진 연산(계산, 행동)을 한 후에 결과값을 반환하는 구성 요소
  • 주로 기호를 사용해서 표현
  1. 문장, Statement
  2. 표현식, Expression
  3. 연산자
  4. 피연산자
  5. 연산자 우선 순위
  6. 연산 방향
//문장
int a = 10;

//문장 : 하나이상의 표현식이 모인 집합이다. 
int a; -> 표현식 : 문장 내에서 혼자 떨어져나와 독립적으로 존재 가능한 것
//a = 10; 
//10;

//연산자&피연산자
//1+2 -> 1, 2는 피연산자, + 연산자
    
//연산자 우선 순위    
//1+2x3 
    
//연산 방향
//1+2+3+4 -> 동등한 연산자, 왼쪽에서 오른쪽으로 더해준다. 
    
    
  • 자바의 연산자 종류
    • 산술 연산자
      • +, - , * , /, %(mod연산자, 나머지연산자)
      • 2항연산자(피연산자가 2개)
      • 피연산자를 숫자로 가진다.(정수, 실수)
      • mod연산자 사용? -> 프로그램에서 패턴을 만들때 사용.
        • ex) 달력만들기
          • 해당 월의 마지막 날짜(암기..)
          • 해당 월의 1일의 요일(기준점(일)을 정한다.) -> 서기 1년 1월 1일 월요일이다.
int a = 10;
int b = 3;
		
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b);
System.out.println(a%b);
profile
모르면 괴롭고 알면 즐겁다.

0개의 댓글

관련 채용 정보