[Java][국비교육] Day 6

Ga02·2023년 1월 3일

국비교육

목록 보기
5/82
<조건연산자>
int num1 = 30, num2 = 20;
System.out.println( num1<num2 ? "num1이 작다" : "num1이 작지않다" );
👉🏻 num1이 작지않다 ➡ 크거나 같다


<Scanner>
import java.util.Scanner;

Scanner sc = new Scanner(System.in);
System.out.print("숫자를 입력하세요 : "); //print를 사용해야 입력받을 위치가 :(콜론)옆으로 생김

int data = sc.nextInt(); //키보드에서 입력된 내용을 int형으로 받아들이겠다.
System.out.println("입력된 값 : " + data);


<Scanner 문자열 입력 처리>
Scanner sc = new Scanner(System.in);
String str1, str2;

System.out.print("Input String : ");

//nextLine()
str1 = sc.nextLine();
str2 = sc.nextLine();
👉🏻
---입력---
Input String : Apple Banana
Cherry
---출력---
str1 : Apple Banana
str2 : Cherry

//next()
str1 = sc.next();
str2 = sc.next();
👉🏻
---입력---
Input String : Apple Banana

---출력---
str1 : Apple
str2 : Banana


<nextInt()nextLine() 사용시 문제 해결하기>
Scanner sc = new Scanner(System.in);

System.out.print("Input Number : ");
int num = sc.nextInt(); ➡ 입력받은 데이터에서 정수값만 읽히고 \n은 남음

sc.nextLine(); 👉🏻 남은 \n 제거
sc.skip("[\\r\\n]+") 👉🏻 모든 \r, \n 제거

System.out.print("Input String : ");
String str = sc.nextLine(); ➡ 코드 실행되면서 남은 \n가 읽혀 입력받지 않고 그대로 실행 끝

🔍 삼항연산자

➰ 조건

(조건식) ? (true일 때 반환할 값) : (false일 때 반환할 값)

  • 조건식 : true, false로 판별할 수 있는 연산식

🔍 Scanner

키보드로 입력한 내용을 프로그램 데이터로 가져오는 입력기능 클래스

➰ import 선언코드

현재 소스코드에서 Scanner라는 이름으로 java.util.Scanner를 대신해서 사용하겠다 👉🏻 ctrl + shift + o import 최적화

➰ 참조형 변수 사용방법

[클래스명][변수명]; 👉🏻 참조형 변수 선언
[변수명] = new [클래스명]( [필요한 데이터] ); 👉🏻 객체 생성, 클래스 기능 활성화

📄 example

Scanner sc;
sc = new Scanner( System.in );Scanner sc = new Scanner( System.in );

System.in
키보드랑 연결된 입력기능 활성화
키보드에서 입력되는 내용은 문자로 인식됨

sc.close();
System.in으로 인해 입력을 항상 대기중인 상태로 유지됨 👉🏻 메소드 종료 전 사용종료를 알려줘야 함

➰ 문자열(String) 입력처리 메소드

  • nextLine();
    개행문자\n(엔터값)을 기준으로 입력한 한 줄을 하나의 데이터로 판단 👉🏻 띄어쓰기가 필요한 문장 사용시 유용
  • next();
    공백문자(White Space, ws) \n \t를 기준으로 하나의 데이터로 판단
    • nextInt(), nextDouble(), nextBoolean() ...

nextInt(); 사용후 nextLine(); 사용시의 문제
nextInt()로 입력받으면 임시저장소(buffer)에 입력된 213\n 중 정수 213만 가져가고 \n은 남겨져 있게 됨 ➡ nextLine()은 \n을 만나면 실행을 종료하므로 새로운 입력을 받지 않고 그대로 다음 코드로 넘어가게 됨

  • 해결법 1.
    nextInt()와 nextLine() 사이에 sc.nextLine() 코드를 하나 더 추가해 buffer에 남은 \n 을 지움
  • 해결법 2.
    nextInt()와 nextLine() 사이에 sc.skip("[\\r\\n]+") 코드를 추가해 buffer에서 \r \n을 모두 제거

➰ Scanner를 이용해 char값 입력받기

char은 Scanner로 직접 입력받을 수 없음 👉🏻 String으로 입력받아 그 중 n번째 글자를 꺼내기

  • String 타입은 char형을 모아놓은 클래스 타입
String str = "Apple Banana";
char test = str.charAt(3);'l' 출력
---------------------------------
Scanner sc = new Scanner(System.in);

String data = sc.nextLine();
System.out.println( data.charAt(0) );String으로 입력받고 n번째 문자 출력하기
---------------------------------
Scanner sc = new Scanner(System.in);

char ch = sc.nextLine().charAt(3);char로 한번에 입력 받기

💭 Q. [이름, 나이, 성별, 국어, 영어, 수학] 6가지 정보를 저장할 수 있는 변수를 만들고 총점과 평균을 포함한 결과를 출력한다.

===== 입력 =====
Input Name : Alice
Input Age : 33

Input Gender : F

Input Korean : 100
Input English : 99
Input Mathematics : 97

===== 출력 =====
이름 나이 성별 국어 영어 수학 총점 평균
Alice 33 F 100 99 97 296 98.666666667

Scanner sc = new Scanner(System.in);

System.out.println("===== 입력 =====");
System.out.print("Input Name : "); //이름
String name = sc.nextLine();

System.out.print("Input Age : "); //나이
int age = sc.nextInt();

sc.nextLine(); ➡ 입력버퍼 비우기

System.out.print("\nInput Gender : "); //성별
String gender = sc.nextLine();String ver.
char gender = sc.nextLine().charAt(0);char ver.

System.out.print("\nInput Korean : "); //국어
int kor = sc.nextInt();
System.out.print("Input English : "); //영어
int eng = sc.nextInt();
System.out.print("Input Mathematics : "); //수학
int math = sc.nextInt();

int sum = kor + eng + math; //총점
double ave = sum / (double)3//평균

🔍 공백문자, Push Space

개행문자에 대한 처리가 운영체제에 따라 다름
\r CR, Carriage Return ( ASCII 13 )

			Apple
            _
            👆🏻커서 위치

\n LF, Line Feed, New Line (ASCII 10)

			Apple
            	_
		커서 위치👆🏻
  • 윈도우 : \r\n 두 문자를 합쳐서 줄바꿈으로 사용 👉🏻 엔터를 치면 2byte 잡아먹음
  • 리눅스 : \n
  • 맥OS : \r 이었는데 요즘엔 \n

➰ 띄어쓰기 (SP, Space)

' ' (ASCII 32)

➰ 개행문자, 줄바꿈 (LF, Line Feed)

'\n' (ASCII 10)

➰ 탭, 수평탭 (HT, Horizontal Tab)

'\t' (ASCII 9)

🔍 소수점 자리수를 지정하여 출력하기

➰ printf() 메소드

print formatted 출력 형식을 지정하여 화면에 데이터 출력

System.ou.printf( "서식문자를 포함하는 문자열" , [서식문자를 대체할 데이터] , ...);
  • 서식문자 : 출력 데이터의 형식(+타입)을 지정하는 문자
    • %d 10진수 정수 형식으로 표형
    • %f 실수 형식 표현
    • %s 문자열 형식 표현
    • %c 단일 문자 형식 표현
System.out.printf("총점 %d점", 289);
➡ 총점 289System.out.printf("%s %d", "HIHI", 656);
➡ HIHI 656

💡 %와 형식 지정글자 사이에 숫자를 이용하여 자릿수를 지정

System.out.printf("%9.4f", 23.45);[  23.4500] //전체 9자리 확보하고 소수점 4자리 유지

System.out.printf("%.2f", 89.6666666667);89.67

➰ String.format()

변환된 문자열을 String 타입으로 반환

String.format( "서식문자 포함 문자열" , [서식문자를 대체할 데이터] , ...);

String str = String("%.2f", 89.66666666667);
System.out.println(str);89.67
profile
IT꿈나무 댓츠미

0개의 댓글