● 입력
★ ★ 문자열과 숫자를 하나의 프로그램에서 입력 받아야 하는 경우
*문자* > *숫자* 순서로 입력 받아야 한다!!!
- 숫자를 읽은 후 nextLine()을 호출하면 예상치 못한 동작이 발생할 수 있다
- 이는 숫자를 읽은 후 남아 있는 개행 문자(\n)를 nextLine()이 읽기 때문이다
=> 숫자 뒤에 문자열을 읽을 때는 nextLine()을 호출해 개행 문자를 처리해야 한다
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 숫자 입력
System.out.print("숫자를 입력하세요: ");
int number = scanner.nextInt();
// 개행 문자 소비 (버퍼 정리)
scanner.nextLine();
// 문자열 입력
System.out.print("문자열을 입력하세요: ");
String text = scanner.nextLine();
System.out.println("입력된 숫자: " + number);
System.out.println("입력된 문자열: " + text);
}
}
=> 숫자와 문자열을 섞어서 입력받을 수 있지만, 타입에 따라 처리 순서를 조정하고, 특히 숫자 뒤에는 nextLine()으로 개행 문자를 처리하는 것이 중요하다 !!!
// 문자열
String name = reader.nextLine();
// 정수
int age = reader.nextInt();
// 실수
double height = reader.nextDouble();
● 이스케이프 문자
| \n | 줄바꿈 |
| \t | 탭 |
| \' \" | 따옴표 |
| \\ | 역슬래시 |
● 형식문자
| %s | 문자열 | |
| %d | 정수 | |
| %f | 실수 | 소수점 6자리까지 표시 그 이상은 반올림 |
| %g | 실수 | 소수점 4자리까지 표시 그 이상은 반올림 |
| %% | 퍼센트 표시 |
소수점 자리 제한하는 방법 따로있어서 %g는 잘 안 쓴다
String name = "hyeon";
int age = 20;
System.out.printf("%s님은 %d세 입니다. \n", name, age);
System.out.prinln("%s님은 %d세 입니다. \n", name, age);
println 으로 할 시 Error -> The method println(int) in the type PrintStream is not applicable for the arguments (String, int)
printf 는 \n 줄바꿈을 넣어줘야 한다
● 자릿수 지정
System.out.printf("%10s\n", "java");
System.out.printf("%10s\n", "java programming");
- 주어진 자릿수보다 짧을 경우 왼쪽부터 공백 추가
- 주어진 자릿수보다 긴 경우 그대로 출력

System.out.printf("%5d\n", 123);
System.out.printf("%5d\n", 1234567);

System.out.printf("%010d\n", 12345);

System.out.printf("%10f\n", 123.4567);
System.out.printf("%010f\n", 123.4567);

// 소수점 둘째자리까지만 출력
System.out.printf("%.2f\n", 123.4567);
// 소수점 자릿수, 10칸에서 오른쪽 정렬
System.out.printf("%10.2f\n", 123.4567);
// 소수점 자릿수, 빈자리 0으로 채우고 오른쪽 정렬
System.out.printf("%010.2f", 123.4567);

반응형