반응형
Scanner 사용
Class 안에 하단의 코드를 기입해야만 Scanner을 사용할 수 있다.
Scanner 이름 = new Scanner(System.in); // System.in 은 키보드로 입력 받는다는 뜻
// ctrl + shift + o로 인해 위에 import 함.
String 변수명 = 이름.nextLine(); // 데이터를 입력 받음
String 변수명 = 이름.next();
int 변수명 = 이름.nextInt();
package kr.or.ddit.study02.sec03;
import java.util.Scanner;
public class CastExample01 {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
CastExample01 obj = new CastExample01();
obj.method1();
}
public void method1() {
String str = sc.nextLine(); // 데이터를 입력 받음
System.out.println("키보드로 입력 받은 값은 : " + str);
/*
* 문자열 -> 문자
* String -> char
*/
char ch = str.charAt(0); // 0이 첫번째 문자열을 뜻함, 두번째 문자열로 변경 후 한 글자만 입력 시 오류.
System.out.println("키보드로 입력 받은 첫번째 문자는 : " + ch);
}
}
타입 변환
- 자동 타입 변환
: 작은 타입이 큰 타입으로 저장되는 경우 발생한다.
· 범위
byte < short < int < long < float < double
- 강제 타입 변환
: 큰 타입을 강제로 작은 타입으로 나누어 저장하는 경우 발생한다.
Wrapper class를 이용하여 변환할 수 있다.
변환 방법
변환 타입 | 사용 예 |
String -> byte | String str = "10" ; byte value = new Byte(str).byteValue ; // byte value = Byte.parseByte(str) ; // byte value = Byte.valueOf(str) ; |
String -> short | String str = "200" ; short value = new Short(str).shortValue ; // short value = Short.parseShort(str) ; // short value = Short.valueOf(str) ; |
String -> int | String str = "300000000" ; int value = new integer(str).intValue ; // int value = Integer.parseInt(str) ; // int value = Integer.valueOf(str) ; |
String -> long | String str = "4000000000000" ; long value = new Long(str).longValue ; // long value = Long.parseLong(str) ; // long value = Long.valueOf(str) ; |
String -> float | String str = "12.345" ; float value = new Float(str).floatValue ; // float value = Float.parseFloat(str) ; // float value = Float.valueOf(str) ; |
String -> double | String str = "12.345" ; double value = new Double(str).doubleValue ; // double value = Double.parseDouble(str) ; // double value = Double.valueOf(str) ; |
String -> boolean | String str = "true" ; boolean value = new Boolean(str).booleanValue ; // boolean value = Boolean.parseBoolean(str) ; // boolean value = Boolean.valueOf(str) ; |
자동 타입 변환 예시
int -> double 변환
int 변수명1 = 90;
double 변수명2 = 변수명1 / 3.0; // int 타입 / int 타입의 경우 int 타입이기에 double로 변환되지 않음
// 그렇기에 3.0 또는 앞에 (double)로 실수 타입으로 변환해주어야 함.
package kr.or.ddit.study02.sec03;
public class CastExample02 {
public static void main(String[] args) {
CastExample02 obj = new CastExample02();
obj.method1();
}
public void method1() {
/*
* int type
* 국어 영어 수학
* 점수 입력 해보기
*/
int kor = 90;
int eng = 77;
int math = 84;
/*
* int sum 에 변수 저장해보기
*/
int sum = kor + eng + math;
System.out.println("국어: " + kor);
System.out.println("영어: " + eng);
System.out.println("수학: " + math);
System.out.println("총점: " + sum);
// double avg = (double)sum / 3;
double avg = sum / 3.0;
// double avg = sum / 3; // int 나누기 int로 하여서 double로 바꿔줘야 함
System.out.println("평균: " + avg);
}
}
강제 타입 변환 예시
1. String -> char 변환
.charAt(몇번째 문자열인지)
// Scanner 사용
Scanner 명칭 = new Scanner(System.in);
String 변수명1 = 명칭.nextLine(); // 데이터를 입력 받음
// 기존 String을 char로 변환
char 변수명2 = 변수명1.charAt(0); // 0은 몇번째 문자열인지를 뜻한다.
// 프로그램은 0번째부터 존재하기에 0이 곧 처음을 이야기한다.
2. String -> int 변환
변환하지 않을 시 10 + 10이 1010으로 출력된다.
// Scanner 사용
Scanner 명칭 = new Scanner(System.in);
String 변수명1 = 명칭.nextLine(); // 데이터를 입력 받음
// 기존 String을 int로 변환
int 변수명2 = Integer.parseInt(변수명1); // 하단의 2가지를 대신 사용해도 된다.
// int 변수명2 = Integer.valueOf(변수명1);
// int 변수명3 = new Integer(변수명1).intValue();
package kr.or.ddit.study02.sec03;
import java.util.Scanner;
public class CastExample03 {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
CastExample03 obj = new CastExample03();
obj.method1();
}
public void method1() {
String str = sc.nextLine();
System.out.println("입력 받은 문자열은 : " + str);
String str2 = str + 10;
System.out.println("문자열에 10을 더한 값은 : " + str2);
// 숫자로 바꿀 때
int num = Integer.parseInt(str); // 문자열 String타입의 숫자를 int타입으로 변환해줌
num = num + 10;
System.out.println("숫자로 변환 후 10을 더한 값은 : " + num);
}
}
3. String -> double 변환
// Scanner 사용
Scanner 명칭 = new Scanner(System.in);
String 변수명1 = 명칭.nextLine(); // 데이터를 입력 받음
// 기존 String을 double로 변환
double 변수명2 = Double.parseDouble(변수명1); // 하단의 2가지를 대신 사용해도 된다.
// double 변수명2 = Double.valueOf(변수명1);
// double 변수명2 = new Double(변수명1).doubleValue();
package kr.or.ddit.study02.sec03;
import java.util.Scanner;
public class CastExample03 {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
CastExample03 obj = new CastExample03();
obj.method4();
}
public void method4() {
/*
* 키보드로 문자(double 형 데이터) 데이터를 입력받고
* 나누기 3 한 값을 출력 해보기.
*/
System.out.println("실수형 숫자를 입력하시오.");
String str = sc.nextLine();
double d1 = Double.valueOf(str);
double result = d1/3;
System.out.println("3으로 나눈 값은 : " + result);
}
}
출력 메소드
아래와 같은 형식으로 쓰인다.
System.out.출력메소드 ;
1. println() 메소드
: 괄호 안의 내용 출력 후 행 바꿈
2. print() 메소드
: 괄호 안의 내용 출력
3. printf("형식문자열", 값1, 값2) 메소드
: 괄호 안의 첫번째 문자열 형식대로 내용 출력
- 형식문자열
package kr.or.ddit.study02.sec04;
public class PrintExample {
public static void main(String[] args) {
// System.out.print() -- 줄바꿈 없음
System.out.print("홍길동 ");
System.out.print(" 34061 ");
System.out.print(" 대전시 중구 계룡로 ");
System.out.println();
// System.out.println() -- 줄바꿈.
// 단축키 syso
System.out.println("홍길동 ");
System.out.println("34061");
System.out.println("대전시 중구 계룡로");
// System.out.printf("형식지정문자열", 변수 리스트)
// "형식 지정문자열"
// "%[[-0]n]d 10진 정수
// - : 왼쪽 정렬
// 0 : 남은 왼쪽 빈공간에 0 채움
System.out.printf("숫자 : %d 입니다.\n", 10000);
System.out.printf("숫자 : %8d 입니다.\n", 10000);
System.out.printf("숫자 : %-8d 입니다.\n", 10000);
System.out.printf("숫자 : %08d 입니다.\n", 10000);
}
}
+ System.in.read() 메소드
: 키보드에서 입력된 키보드를 읽는 메소드.
2개 이상 키가 조합된 한글을 읽을 수 없다.
=> Scanner로 문제를 해결했다.
반응형
'자바' 카테고리의 다른 글
[Java 초급] 5장 단항, 이항, 삼항 연산자 (0) | 2023.12.06 |
---|---|
[Java 초급] 4.5장 테스트 (2) | 2023.12.06 |
[Java 초급] 3.5장 테스트 (0) | 2023.12.05 |
[Java 초급] 3장 타입들의 종류 (0) | 2023.12.05 |
[Java 초급] 2장 변수 선언 및 변수 초기화 (0) | 2023.12.03 |