우측 상단의 라이트 모드를 켜주세요
자바에서 키를 입력할 때 System.in은 키보드로부터 직업 읽는 자바의 표준 입력 스트림으로
키 값을 바이트(문자 X)로 리턴한다.
따라서 응용프로그램이 문자 정보로 변환을 해야한다.
이에 따라 여러 클래스가 생겼고, 그 중 가장 많이 사용하는 클래스는 Scanner 클래스이다.
Scanner 클래스
System.in에게 키를 읽도록 하고, 읽은 바이트를 문자, 정수, 실수, 불린, 문자열 등 다양한 타입으로 변환하여 리턴
사용방법
가장 상단에 import java.util.Scanner; 를 선언해주면 된다.
Scanner에서 키 입력 받기
- Scanner는 입력되는 키 값을 공백으로 구분되는 아이템 단위로 읽음
- 공백문자 : '\t'(탭), '\f'(페이지바꿈), '\r'(줄바꿈 시 맨 앞으로), ' ', '\n'(줄바꿈)
- 개발자가 원하는 다양한 타입의 값으로 바꾸어 읽을 수 있음
Scanner에서 주로 사용하는 메소드
String next() : 다음 토큰을 문자열로 리턴
byte nextByte() : 다음 토큰을 byte 타입으로 리턴
short nextShort() : 다음 토큰을 short 타입으로 리턴
int nextInt() : 다음 토큰을 int 타입으로 리턴
long nextLong() : 다음 토큰을 long 타입으로 리턴
float nextFloat() : 다음 토큰을 float 타입으로 리턴
double nextDouble() : 다음 토큰을 double 타입으로 리턴
boolean nextBoolean() : 다음 토큰을 boolean 타입으로 리턴
String nextLine() : '\n'을 포함하는 한 라인틀 읽고 '\n'을 버린 나머지 문자열 리턴
void close() : Scanner의 사용 종료
boolean hasNext() : 현재 입력된 토큰이 있으면 true, 아니면 입력 때 까지 무한정 대기,
새로운 입력이 들어오면 true 리턴
[Ctrl] + z 키가 입력되면 입력이 끝으로 false리턴
/*
어떤 프로그래밍을 하던 가장 많이 해보는 테스트 중 하나 별모양 찍기
피라미드 모양, 다이아몬드 모양 등등을 출력해보는 코드를 작성해보자
*/
public class DoublyForStar{
/*
보고자 하는 모양
*
***
*****
*******
필요한 변수의 개수
공백의 개수 이하 spaceCnt
별의 개수 이하 starCnt
i(줄 수) starCnt spaceCnt 별의 규칙성 공백의 규칙성
1 1 3 2i -1 4-i
2 3 2 2i -1 4-i
3 5 1 2i -1 4-i
4 7 0 2i -1 4-i
.... 등 줄 수만 바뀌면 언제든지 가능
규칙성을 찾았으니 다음은 이를 코드 형태로 만들어보자
*/
public static void main(String[] args){
int starCnt = 1; // 별의 개수
int spaceCnt = 3; // 공백의 개수
for(int i = 1; i <= 4; i++){
starCnt = (2*i) -1; // 별의 규칙성
spaceCnt = 4 - i; // 공백의 규칙성
for(int j = 1; j <= spaceCnt; j++){
System.out.print(" "); // 공백을 출력
}
for(int k = 1; k <= starCnt; k++){
System.out.print("*"); // 별을 출력
}
System.out.println(""); // 1회 출력 시 줄바꿈
}
}
}
그렇다면 다이아몬드는 어떻게 되어있을까?
public class DoublyForStar2{
/*
보고자 하는 모양
*
***
*****
*******
*****
***
*
필요한 변수의 개수
공백의 숫자 이하 spaceCnt
별의 숫자 이하 starCnt
i(줄 수) starCnt spaceCnt 별의 규칙성 공백 규칙성
1 1 3 2i -1 4-i
2 3 2 2i -1 4-i
3 5 1 2i -1 4-i
4 7 0 2i -1 4-i // 최대치 변곡점
5 5 1 14-2i +1 i-4 // 14는 마지막 줄 수 * 2
6 3 2 14-2i +1 i-4
7 1 3 14-2i +1 i-4 // i의 끝
*/
public static void main(String[] args){
int starCnt = 1; // 초기 값
int spaceCnt = 3; // 초기 값
for(int i = 1; i <= 7; i++){
if(i <= 4) { // 변곡점 이전 까지 규칙성
starCnt = 2*i - 1;
spaceCnt = 4-i;
} else { // 변곡점 이후의 달라지는 규칙성
starCnt = 14 - (2*i) + 1;
spaceCnt = i - 4;
} // 이후는 똑같음 if 문을 써서 여러 for문을 거칠 필요 없이 사용
for(int j = 1; j <= spaceCnt; j++){
System.out.print(" ");
}
for(int k = 1; k <= starCnt; k++){
System.out.print("*");
}
System.out.println(""); // 줄바꿈
}
}
}
-----------------------------------------------------------------------------------------
사람들이 프로그래밍을 하다보면 가장 먼저 무너지는 구간 중 첫 번째인 별찍기에 대해서 정리해 보았다.
'Java' 카테고리의 다른 글
| Java 정리 4-1 (0) | 2024.07.01 |
|---|---|
| Java 정리 3 (0) | 2024.06.28 |
| Java 정리 2-3 (0) | 2024.06.26 |
| Java 정리 2-2 (0) | 2024.06.25 |
| Java 정리 2-1 (0) | 2024.06.25 |