package com.lec.java.input01;
import java.util.Scanner;
// scanner 사용하기 위해 해당 패키지 import 해야 함 (직접 입력 OR Scanner sc 마우스 갖다 대고 Quick Fix의 'Import 'Scanner' 클릭 OR
// 메뉴 Source -> Organiza Imports
public class Input01Main {
public static void main(String[] args) {
System.out.println("표준입력 : Scanner 사용");
Scanner sc = new Scanner(System.in);
// Scanner 를 사용한 입력 수행...
int num1, num2;
System.out.print("숫자1을 입력하세요: ");
num1 = sc.nextInt(); // 키보드로부터 정수 한개를 입력받아서 리턴
System.out.print("숫자2를 입력하세요: ");
num2 = sc.nextInt();
System.out.println(num1 + " + " + num2 + " = " + (num1 + num2));
sc.close(); // Scanner 객체를 사용한 뒤에는 close() 해주자. (scanner 반납 매소드)
// close() <-- 사용한 시스템 자원 (키보드, hw, 파일, 네트워크 등...) 을 시스템에 반납
// 각 primitive 타입에 대해 nextXXX() 메소드 제공
// sc.nextByte();
// sc.nextShort();
// sc.nextLong();
// sc.nextFloat();
// sc.nextDouble();
// sc.nextBoolean();
System.out.println("프로그램 종료");
}
}
package com.lec.java.input02;
import java.util.Scanner;
public class Input02Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("이름을 입력하세요: ");
String name = sc.nextLine(); // ENTER 를 입력할때까지의 모든 문자들이 문자열로 리턴
System.out.print("별명을 입력하세요: ");
String nick = sc.nextLine();
System.out.println("너의 이름은: " + name + "\n별명은:" + nick);
// char 입력
// nextChar() 는 없다!
System.out.print("성별을 입력하세요 M/F: ");
char gender = sc.next().charAt(0);
System.out.println("성별은: " + gender);
// next() 및 nextXXX() 공백 단위(토큰 단위)로 문자열을 읽기
// nextLine()는 Enter 단위로 문자열 읽기
System.out.print("나이를 입력하세요: ");
int age = sc.nextInt();
sc.nextLine(); // 숫자입력받고 문자열 입력시에는 반드시 nextLine()을 해줌으로 '\n' 을 버퍼에서 비워준다
System.out.print("주소를 입력하세요: ");
String addr = sc.nextLine();
System.out.println("나이:" + age + "\n주소:" + addr);
sc.close();
}
}
버퍼의 원리
package com.lec.java.input03;
import java.util.Scanner;
public class Input03Main {
public static void main(String[] args) {
System.out.println("nextLine() vs. next()");
Scanner sc = new Scanner(System.in);
System.out.print("여러 단어의 문장을 입력하세요 >");
String in = sc.nextLine();
System.out.println("in : " + in);
System.out.print("여러 단어의 문장을 입력하세요 >");
String in2 = sc.next();
System.out.println("in2 : " + in2);
String in3 = sc.next();
System.out.println("in3 : " + in3);
String in4 = sc.next();
System.out.println("in4 : " + in4);
sc.close();
}
}
일반적으로 프로그램에서 숫자입력하는 것이 처음에는 '문자열(String)' 형태다
ex) 웹, 모바일앱..
이를 숫자 타입으로 변환해야 산술 연산등이 가능해진다
Integer.parseInt(문자열) --> int 로 변환
Double.parseDouble(문자열) --> double 로 변환
Byte.parseByte(문자열)
Short.parseShort(문자열)
Long.parseLong(문자열)
Float.parseFloat(문자열)
Boolean.parseBoolean(문자열)
문자열이 해당 타입으로 변환할수 없는 문자열이면 NumberFormatException 예외 발생 (에러)
package com.lec.java.input04;
import java.util.Scanner;
public class Input04Main {
public static void main(String[] args) {
System.out.println("입력 문자열 -> 숫자 변환");
Scanner sc = new Scanner(System.in);
// 정수 3개를 문자열로 입력 받고 합을 구하기
System.out.print("숫자 3개 (int, int, int)를 입력받으세요 >");
String in1 = sc.next();
int i1 = Integer.parseInt(in1); // 문자열 in1 을 int 로 변환
int i2 = Integer.parseInt(sc.next());
int i3 = Integer.parseInt(sc.next()); // <-> sc.nextInt()
System.out.println("합: " + (i1 + i2 + i3));
// 실수 3개를 문자열로 입력받고 곱을 구하기
double d1 = Double.parseDouble(sc.next()); // 입력받은 문자열을 double 로 변환
double d2 = Double.parseDouble(sc.next());
double d3 = Double.parseDouble(sc.next()); // <-> sc.nextDouble()
System.out.println("곱: " + (d1 * d2 * d3));
sc.close();
}
}