● 입력 메소드
1. next()
- 사용자가 입력한 값을 String 타입으로 받아온다.
- 띄어쓰기로 구분하여 받아온다.
2. nextLine()
- 사용자가 입력한 값을 String 타입으로 받아온다.
- 엔터로 구분하여 받아온다.
3. nextInt()
- 사용자가 입력한 값을 int 타입으로 받아온다.
4. nextDouble()
- 사용자가 입력한 값을 double 타입으로 받아온다.
※ next(), nextInt(), nextDouble()을 사용할 경우 버퍼라는 공간에 엔터 값이나 나머지 값이 남아있을 수 있다.
그렇게 되면 그다음에 또 입력을 받을 때 버퍼에 남아있던 값이 입력되게 되며
원하는 대로 동작하지 않을 수 있다.
이를 방지하기 위해서 nextLine()을 사용하여 버퍼를 비워줄 수 있다.
※ next(), nextInt(), nextDouble()을 사용할 때는 버퍼에 남아있는 값이 있는지 없는지를 주의하자.
● Casting(형변환) : 자료형을 바꾸는 것
1. 명시적 형변환
- (자료형)값;
(ex) (int)3.14
- String은 class 타입이기 때문에 메소드를 활용해야한다.
(ex) String → int : Integer.parseInt();
(ex) int → String : Integer.toString();
(ex) String → double : Double.parseInt();
(ex) double → String : Double.toString();
2. 자동 형변환
- 연산자를 활용하는 방법
(ex) 10 * 1.0
(ex) 10 - 0.0
실습(입력메소드)
1. next()
- 사용자에게 나이를 입력받아서 "당신의 나이는 ??살 입니다" 출력하기
import java.util.Scanner;
public class InputTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("나이를 입력하세요 : ");
String age = sc.next();
System.out.printf("당신의 나이는 %s살입니다.\n", age);
}
}
![](https://blog.kakaocdn.net/dn/bfSe6Z/btrocdpmIqu/hq4OB2ZMqOWF8Vy7do3kP1/img.png)
- 사용자에게 금액을 입력받아서 "??원이 결제되었습니다" 출력하기
import java.util.Scanner;
public class InputTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("금액을 입력하세요 : ");
String money = sc.next();
System.out.printf("%s원이 결제되었습니다.\n", money);
}
}
![](https://blog.kakaocdn.net/dn/bGWT7j/btrob0jr5tV/UmhYKJCxTknpQfwtisyLfk/img.png)
2. nextInt()
- 사용자가 입력한 값을 int 타입으로 받아 출력하기
import java.util.Scanner;
public class InputTest2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("나이를 입력하세요 >> ");
int age = scan.nextInt();
System.out.printf("입력된 나이 : %d\n", age);
}
}
![](https://blog.kakaocdn.net/dn/bIAVaB/btrogvoLtfY/fj5OhessWA6qelBXeAcY6k/img.png)
3. nextDouble()
- 사용자가 입력한 값을 double 타입으로 받아 출력하기
import java.util.Scanner;
public class InputTest2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("실수를 입력하세요 >> ");
double d = scan.nextDouble();
System.out.printf("%.2f가 입력됨\n", d);
}
}
![](https://blog.kakaocdn.net/dn/tYNk6/btrofFSskrT/8MF7rHkzbS6djYa7c5KqA1/img.png)
4. nextLine()
- 사용자에게 주소를 입력받아서(무슨 시인지만) "당신의 주소는 ???입니다" 출력하기
import java.util.Scanner;
public class InputTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("주소를 입력하세요 : ");
String address = sc.nextLine();
System.out.printf("당신의 주소는 %s입니다.\n", address);
}
}
![](https://blog.kakaocdn.net/dn/rv6zK/btroedhBfKg/UBEdSLgWueMTKTqJEA2mtk/img.png)
- 사용자에게 나이와 이름을 입력받아 출력하기
import java.util.Scanner;
public class InputTest3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("나이를 입력하세요 >> ");
String age = sc.nextLine();
sc.nextLine(); // 버퍼에 남아있는 값을 지워주기 위한 용도
System.out.print("이름을 입력하세요 >> ");
String name = sc.nextLine();
System.out.printf("당신의 이름은 %s, 나이는 %s살 입니다.\n", name, age);
}
}
![](https://blog.kakaocdn.net/dn/diekcJ/btrodlmVdqX/kVxhAFWrqvBmKXyMW494Nk/img.png)
실습(Casting)
1. 명시적 형변환
- 기본 방식
System.out.println((int)3.14);
System.out.println((double)3);
System.out.println((char)97);
//System.out.println((int)"10"); // 문자열은 위와 같은 방식으로 casting이 불가능하다.
![](https://blog.kakaocdn.net/dn/btyTlm/btrogwVvY1x/Z9px6IrRrdfnBmrk1Undzk/img.png)
- 문자열 → int : parseInt() → Integer라는 클래스 안에 있다.
int num = Integer.parseInt("10");
- int → 문자열
String temp2 = Integer.toString(10);
String res1 = 10 + ""; // 10 → "10"
- 문자열 → double : parseDouble() → Double이라는 클래스 안에 있다.
double temp = Double.parseDouble("3.14");
- double → 문자열
String temp3 = Double.toString(10);
String res2 = 2.5 + ""; // 10 → "2.5"
2. 자동 형변환
- int 타입과 double 타입의 곱 출력하기
System.out.println(10 * 1.0);
![](https://blog.kakaocdn.net/dn/wPvbu/btroaLtyolx/ocMJetFssVqbPsOTm8BCLk/img.png)
- double 타입에 int 타입 대입하기
double target = 10; // double 타입에 int 타입 값을 대입할 수 있다.