Java /day03 / 23.08.25(금) / (핀테크) Spring 및 Ai 기반 핀테크 프로젝트 구축

허니몬·2023년 8월 25일
post-thumbnail

day03


P03_input


Ex01System

System.in.read()

  • 입력한 값을 1byte 단위로 처리
  • 특정 클래스들의 오류처리를 전담하는 애들이 있음
  • 이것이 사용 규칙 중 하나임

예외처리

  • main() 뒤에 throws
  • 오류 내용 작성 Ex) IOException
  • 하나 지우고 자동완성하여 임포트 하면 편함
  • import는 class 밖에 작성됨

System.in.read();

  • 키보드가 값을 가져올 때는 바이트 > 보낼 때는 인트로 처리
  • 때문에 int 변수에 담아서 처리해야 함
    byte에 담으면 빨간 밑줄 뜸
System.out.println("키보드로 값을 입력하세요 >> ");

int iv = System.in.read();
byte iv = System.in.read(); << 오류
  • 여러 글자 입력시 가장 앞의 글자만 받음
  • ASCII 코드로 출력해줌 Ex) a = 97 , A = 65
  • Ex) abc > 97
  • 형변환을 통해 반대로도 가능
System.out.println("iv : " + iv);

char ca = (char)iv;
System.out.println("ca : " + ca);

buffer

  • 키보드 입력시 일시적으로 저장하는 공간
  • 설명 :
    -- buffer 안에서 키보드로 입력 후 enter를 눌러야 출구가 열려서 입력처리 하는 데이터를 가져다 씀
    -- 엔터가 하는 역할 : 줄바꿈,
    -- Ex) a(입력) -> a\n (엔터)
    -- \r : 커서를 해당 라인의 가장 처음으로 이동
    -- Ex) a\r\n
    -- java 에서는 엔터를 2byte 로 처리

buffer를 빈 상태가 되게 하는 방법
int iv = System.in.read(); 실행 시 a 를 입력 후 엔터를 치면

  • buffer 에 a\r\n 가 생김
  • enter = buffer 에서 \r\n
  • 버퍼가 세 글자를 모두 썼기 때문에 출구 폐쇄
  • Java 'enter' : \r\n
int iv = System.in.read();
char ca = (char)iv;

System.in.read(); // \r 처리
System.in.read(); // \n 처리

skip()

  • 2byte를 무시하고 넘기라는 뜻
  • 단, skip()은 read()를 사용할 때만 가능
System.in.skip(2); 

read() - 숫자 입력

  • 1을 입력하면 ascii에서 49로 나옴
    -> 48을 빼야함
  • read의 단점 1byte만 처리 하기 때문에 1자리 숫자만 가능
    -> 두 자릿수 안됨
System.out.println("숫자 입력(0~9) >> ");
int num = System.in.read() - 48;
System.out.println("num : " + num);	

int로 담을 것이 아니라면 바로 char로 형변환하여 char형 변수에 담기

  • 다음 read가 \r을 받음 -> int로 변환시 13이 나옴
  • 두번째는 줄을 바꿔주었기 때문에 10이 나옴
System.out.print("문자 입력 >> ");
char ch = (char)System.in.read();
System.out.println("ch : "+ ch);
System.out.println("(int)ch : "+ (int)ch);
char ch2 = (char)System.in.read();
System.out.println("ch2 : "+ ch2);
System.out.println("(int)ch2 : "+ (int)ch2);
  • 새로운 문자를 입력받고 싶다면 소모시키면 됨
  • 데이터를 사용하고 싶으면 저장해라 -> 기본임 ㅇㅋ?
  • 그래야 내가 쓰고싶을 때 사용 가능

ASCII

Ex02Scanner

Scanner class

  • 입력받은 데이터를 원하는 자료형으로 선택해서 처리할 수 있다.
  • 클래스에서 만들어진 것들을 객체라 함

import

import java.util.Scanner;
  • class 명을 몇 글자 입력 후 ctrl + space 로 자동완성 -> 자동 import
  • import 해야 함 / 단축키 : ctrl + shift + o
  • class 이름이 같을 수 있음 -> package 가 다를 수 있음

    import java.util.Scanner;
    에서 java.util -> package

Scanner 객체 생성

Scanner sc = new Scanner(System.in);

문자열 : next();
주의사항

  • 숫자를 입력하면 int 타입이 아니라 String 타입임
  • 공백 전까지만 받음
  • Ex) a b 입력 > a 만 출력

System.out.println("단어 입력 >> ");
String word = sc.next();
System.out.println("word : " + word);

숫자 : nextInt();

System.out.println("숫자 입력 >> ");
int iv = sc.nextInt();
System.out.println("iv : " + iv);

실수 : nextDouble()

System.out.println("실수 입력 >> ");
double dv = sc.nextDouble();
System.out.println("dv : " + dv);

문자 : next().charAt(index)

  • 가져온 단어에 'charAt(index)'를 적용
  • index 번째 문자 사용
  • index는 0부터 시작
  • charAt은 Scanner class가 아니라 String class 메소드
String stn = sc.next();
char ch = stn.charAt(0);
↓ 한 줄에 쓴 것
char ch = sc.next().charAt(0);
System.out.println("문자 입력 >> ");
char ch = sc.next().charAt(0);
System.out.println("ch : " + ch);

문장 : nextLine()

  • next()와 다르게 공백(' ')을 인식함
System.out.println("문장 입력 >> ");
sc.nextLine();
String stn = sc.nextLine();
System.out.println("stn : " + stn);

next 추가 설명

buffer에서
다른 next 들은 데이터 처리 기준단위 공백(space)기준
단, line은 enter임
결과 -> 건너뜀
-> skip() 을 쓸 수 없음
-> 위 코드와 같이 nextLine을 한 번 더 써서 enter을 날려야함

QuizInput

import java.util.Scanner;
Scanner sc = new Scanner(System.in);

#1

  • 이름, 주소, 나이, 성별(m, f), 키를 입력받아서 출력하는 코드를 작성하세요
  • 주소는 띄어쓰기 처리가 가능합니다
System.out.println("#1. 개인정보");

System.out.println("이름 : ");
String name = sc.next();
		
System.out.println("주소 : ");
sc.nextLine();
String adr = sc.nextLine();
		
System.out.println("나이 : ");
nt age = sc.nextInt();
		
System.out.println("성별 : ");
char gen = sc.next().charAt(0);
		
System.out.println("키   : ");
double hi = sc.nextDouble();

System.out.println("--- 입 력  정 보 ---");
System.out.println("이름 : "+ name);
System.out.println("주소 : "+ adr);
System.out.println("나이 : "+ age);
System.out.println("성별 : "+ gen);
System.out.println("키 : "+ hi +"cm");

#2

  • ID 를 입력받고, 입력받은 ID 를 사용해서 E-mail 을 생성하는 코드를 작성하세요
  • Ex) ID 입력 > test
    E-mail : test@abc.com
String domain = "@abc.com";
System.out.println("ID 입력 : ");
String id = sc.next();
System.out.println("E-mail : " + id + domain);

#3

  • 세과목의 점수를 입력받아서 총점, 평균을 구하는 코드를 작성하세요
  • int : 점수, 총점
    double : 평균
  • 평균은 소수점 첫째자리 까지만 표시됩니다
System.out.print("1과목 점수 입력 : ");
int s1 = sc.nextInt();
System.out.print("2과목 점수 입력 : ");
int s2 = sc.nextInt();
System.out.print("3과목 점수 입력 : ");
int s3 = sc.nextInt();

점수입력 한 번에 다 하기
System.out.println("세과목 점수 입력");
int s1 = sc.nextInt();
int s2 = sc.nextInt();
int s3 = sc.nextInt();

int tot = s1+s2+s3;
// avg는 double, tot는 int기 때문에 형변환을 해야 한다.
double avg = tot/3.0;
double avg1 = (double)tot/3.0;
		
System.out.print("[총점 : "+tot);
System.out.printf(", 평균 : %.1f]\n", avg);
System.out.printf("[평균 : %.1f]", avg1);

profile
Fintech

1개의 댓글

comment-user-thumbnail
2023년 8월 28일

안녕 허니몬👻

답글 달기