Ⅰ. wrapper 클래스
-- 기본자료형(원시형)은 데이터 저장 및 4칙연산 에서만 사용하는 것이고, wrapper 클래스는 데이터 저장 및 4칙연산 뿐만아니라 아주 다양한 기능의 메소드가 제공되므로 다방면으로 사용되어진다.
기본자료형 (원시형, primitive) |
wrapper 클래스 |
byte |
Byte |
short |
Short |
int |
Integer |
long |
Long |
char |
Character |
float |
Float |
double |
Double |
boolean |
Boolean |
-- int와 char를 제외하면 첫 글자만 대문자로 바꾸면 된다.
Character.toUpperCase();를 사용하여 대문자를 소문자로, 소문자를 대문자로 바꾸어 보자.
System.out.println(Character.toUpperCase('b'));
//Character.toUpperCase('b');은 'b'를 대문자 'B'로 바꾸어서 반환해 준다.
System.out.println(Character.toLowerCase('T'));
//Character.toLowerCase('T');은 'T'를 소문자 't'로 바꾸어서 반환해 준다.
▷결과
B
t
-- String(문자열)을 int(정수형) 타입으로 바꾸어 보자.
String str1 = "12";
String str2 = "34";
System.out.println(str1 + " + " + str2 + " = " + (str1+str2));
▷결과
12 + 34 = 1234
int num1 = Integer.parseInt(str1);
int num2 = Integer.parseInt(str2);
System.out.println(str1 + " + " + str2 + " = " + (num1+num2));
-- Integer.parseInt : 정수로 되어진 문자열
-- 정수로 되어진 문자열을 실제 정수로 변환시켜 주는 것이다.
▷결과
12 + 34 = 46
int(정수형)을 String(문자열)로 바꾸어 보자.
int a = 98;
int b = 76;
String stra = Integer.toString(a);
String strb = String.valueOf(b);
System.out.println(a + " + " + b + " = " + (stra+strb));
-- Integer.toString();을 사용할 수도 있고, String.valueOf();를 사용할 수도 있다.
▷결과
98 + 76 = 9876
double(실수형)을 String(문자열)로 바꾸어 보자.
String str3 = "12.34";
String str4 = "45.67";
System.out.println(str3 + " + " + str4 + " = " + (str3+str4));
▷결과
12.34 + 45.67 = 12.3445.67
double num3 = Double.parseDouble(str3);
double num4 = Double.parseDouble(str4);
System.out.println(str3 + " + " + str4 + " = " + (num3+num4));
-- Double.parseDouble : 실수로 되어진 문자열
-- 실수로 되어진 문자열을 실제 실수로 변환시켜 주는 것이다.
▷결과
12.34 + 45.67 = 58.010000000000005
double(실수형)을 String(문자열)로 바꾸어 보자.
double c = 98.76;
double d = 54.32;
String strc = Double.toString(c);
String strd = String.valueOf(d);
System.out.println(c + " + " + d + " = " + (strc+strd));
-- Double.toString(); 을 사용할 수도 있고, String.valueOf();를 사용할 수도 있다.
▷결과
98.76 + 54.32 = 98.7654.32
Ⅱ. 제어문 (if)
▷ if(조건식1) {
// 조건식1 이 참(true)이라면
// 실행명령문1;을 실행하고서 끝낸다.
실행명령문1;
}
else if(조건식2) {
// 조건식2 이 참(true)이라면
// 실행명령문2;을 실행하고서 끝낸다.
실행명령문2;
}
else if(조건식3) {
// 조건식3 이 참(true)이라면
// 실행명령문3;을 실행하고서 끝낸다.
실행명령문3;
}
else {
// 조건식1, 조건식2, 조건식3 이 모두 거짓(false)이라면
// 실행명령문4;을 실행하고서 끝낸다.
실행명령문4;
}
int no = 30;
if(50-10 == no) {
System.out.println("50-10 = 30 입니다.");
}
else if (50-40 == no) {
System.out.println("50-40 = 30 입니다.");
}
else if (50-20 == no) {
System.out.println("50-20 = 30 입니다.");
}
else {
System.out.println("나는 수학을 몰라요 ㅜㅜ");
}
▷결과
50-20 = 30 입니다.
변수 ch1 값이 '9' 일 때 영문 대문자, 영문 소문자, 숫자, 특수문자를 구분하는 if문을 만들어 보자.
▷첫 번째 방법
if(65 <= (int)ch1 && (int)ch1 <= 90) {
System.out.println(ch1 + "는 영문 대문자 입니다.");
}
else if(97 <= (int)ch1 && (int)ch1 <= 122) {
System.out.println(ch1 + "는 영문 소문자 입니다.");
}
else if(48 <= (int)ch1 && (int)ch1 <= 57) {
System.out.println(ch1 + "는 숫자입니다.");
} else {
System.out.println(ch1 + "는 특수문자입니다.");
▷두 번째 방법
f('A' <= ch1 && ch1 <= 'Z') {
System.out.println(ch1 + "는 영문 대문자 입니다.");
}
else if('a' <= ch1 && ch1 <= 'z') {
System.out.println(ch1 + "는 영문 소문자 입니다.");
}
else if('0' <= ch1 && ch1 <= '9') {
System.out.println(ch1 + "는 숫자입니다.");
} else {
System.out.println(ch1 + "는 특수문자입니다.");
}
▷세 번째 방법
if(Character.isUpperCase(ch1)) {
System.out.println(ch1 + "는 영문 대문자 입니다.");
}
else if(Character.isLowerCase(ch1)) {
System.out.println(ch1 + "는 영문 소문자 입니다.");
}
else if(Character.isDigit(ch1)) {
System.out.println(ch1 + "는 숫자입니다.");
} else {
System.out.println(ch1 + "는 특수문자입니다.");
}
-- 결과는 모두 "9는 숫자입니다" 라고 나온다.
Ⅲ. Scanner(스캐너)
Scanner sc = new Scanner(System.in);
// System.in 은 키보드라고 생각하면 된다.
sc.close();
// 사용 후에는 닫아주도록 한다.
// main 메소드 닫히기 전
-- 입력한 값을 받아오기 위한 스캐너 객체를 생성한다.
System.out.print("문장을 입력하세요 => ");
String inputStr = sc.nextLine();
-- sc.nextLine();은 입력한 문장을 읽어온다.
-- 엔터까지 모두 읽어온 후 스캐너 버퍼에 아무것도 남기지 않는다.
System.out.print("정수를 입력하세요 => ");
int inputNum = sc.nextInt();
-- sc.nextInt();는 입력한 정수를 읽어온다.
-- 종결자가 공백 또는 엔터이기 때문에 종결자(공백 또는 엔터) 앞까지의 입력해 준 정수를 읽어온다.
-- 스캐너 버퍼에는 종결자가 삭제되는 것이 아니라 그대로 남아 있게 된다.
double inputDbl = sc.nextDouble();
sc.nextDouble();
sc.nextLine();
System.out.println("입력한 실수 : " + inputDbl);
-- sc.nextDouble();는 실수를 읽어온다.
System.out.print("단어를 입력하세요 => ");
inputStr = sc.next();
-- sc.next();은 다음에 입력한 단어를 읽어온다.
-- sc.nextInt();와 마찬가지로 종결자가 공백 또는 엔터이기 때문에 스캐너 버퍼에는 종결자가 삭제되는 것이 아니라 그대로 남아 있다.
-- 따라서 next(), nextInt()를 사용할 경우 스캐너 버퍼를 따로 초기화 시켜 주어야 하기 때문에 nextLine()을 한 줄 더 쓰게 되므로
nextLine()을 처음부터 쓰는 것이 좋다.
Ⅳ. round(반올림)
double db1=93.45678, db2=86.87654;
System.out.println("=== 반올림 하기 전 ===");
System.out.println("db1 => " + db1 + ", db2 => " + db2);
▷결과
=== 반올림 하기 전 ===
db1 => 93.45678, db2 => 86.87654
System.out.println("\n=== 반올림 한 후 ===");
System.out.println("db1 => " + Math.round(db1) + ", db2 => " + Math.round(db2));
▷결과
=== 반올림 한 후 ===
db1 => 93, db2 => 87
-- Math.round(실수) : 입력한 실수의 정수 일의 자리까지만 보여주고 나머지 소수부는 반올림하면서 삭제된다.
-- db1 => 93.45678 소수부 첫 번째 자리는 4이므로 올림이 안 된다. 즉, 93이 된다.
-- db2 => 86.87654 소수부 첫 번째 자리는 8이므로 올림이 된다. 즉, 87이 된다.
특정 소수부 자리에서 반올림을 해 보자.
-- Math.round()는 정수의 반올림만 되므로 원하는 소수부 자리까지 정수가 되도록 곱해 준 후, 반올림을 하고 다시 나누어 준다.
db1과 db2를 소수 첫째 자리까지 나타내어주는 반올림을 해 보자.
System.out.println("\n=== 소수부 첫째자리까지 나타내어 주는 반올림 한 후 ===");
System.out.println("db1 => " + Math.round(db1*10)/10.0 + ", db2 => " + Math.round(db2*10)/10.0);
-- db1 ==> 93.45678 × 10 ==> 934.5678 ==> Math.round(934.5678) ==> 935 ==> 935 / 10.0 ==> 93.5
-- db2 ==> 86.87654 × 10 ==> 868.7654 ==> Math.round(868.7654) ==> 869 ==> 869 / 10.0 ==> 86.9
-- 나누어 줄 때 10으로 나누면 정수/정수=정수가 되므로 실수인 10.0으로 나누어 주어야 한다.
▷결과
=== 소수부 첫째자리까지 나타내어 주는 반올림 한 후 ===
db1 => 93.5, db2 => 86.9
db1과 db2를 소수 둘째 자리까지 나타내어주는 반올림을 해 보자.
System.out.println("\n=== 소수부 첫째자리까지 나타내어 주는 반올림 한 후 ===");
System.out.println("db1 => " + Math.round(db1*100)/100.0 + ", db2 => " + Math.round(db2*100)/100.0);
-- db1 ==> 93.45678 × 100 ==> 9345.678 ==> Math.round(9345.678) ==> 9346 ==> 9346 / 100.0 ==> 93.46
-- db2 ==> 86.87654 × 100 ==> 8687.654 ==> Math.round(8687.654) ==> 8688 ==> 8688 / 100.0 ==> 86.88
-- 나누어 줄 때 10으로 나누면 정수/정수=정수가 되므로 실수인 10.0으로 나누어 주어야 한다.
▷결과
=== 소수부 첫째자리까지 나타내어 주는 반올림 한 후 ===
db1 => 93.46, db2 => 86.88
국어, 영어, 수학 점수를 받아 총점, 평균, 평균에 따른 학점을 나타내는 프로그램을 만들어 보자.
-- 스캐너를 받아와서 학생명, 국어점수, 영어점수, 수학명을 입력 받아 나타내어 주는 함수를 만들어 보자.
package my.day4.e.sungjuk;
import java.util.Scanner;
public class MainQuiz {
Sungjuk makeSungjuk(Scanner sc) {
Sungjuk result = null;
System.out.println("== 학생성적 등록하기 ==");
System.out.print("1.학생명 : ");
String name = sc.nextLine();
System.out.print("2.국어점수 : ");
String strKor = sc.nextLine();
System.out.print("3.영어점수 : ");
String strEng = sc.nextLine();
System.out.print("4.수학점수 : ");
String strMath = sc.nextLine();
result = new Sungjuk(name, Integer.parseInt(strKor), Integer.parseInt(strEng), Integer.parseInt(strMath));
return result;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
MainQuiz maq = new MainQuiz();
//MainQuiz의 인스턴스
Sungjuk sungjuk1 = maq.makeSungjuk(sc); // makeSungjuk()에 스캐너를 받아와서 그대로 쓸 수 있음
// makeSungjuk 메소드를 통해서 sungjuk1인 인스턴스를 만들 수 있다
// 클래스와 이름이 같으면 생성자, 이름이 같지 않으면 메소드
sungjuk1.showInfo();
sc.close();
} // end of main()-------------------------------------------
}
'수업내용' 카테고리의 다른 글
[Day8][Java] 가위바위보 게임 / 숫자 맞히는 게임 / 레이블 / 배열 / 확장된 for문 / Random / 로또 당첨번호 / 버블 정렬 (0) | 2019.09.01 |
---|---|
[Day7][Java] while문 / do~while문 / Math.random / equals / 가위바위보 프로그램 (0) | 2019.09.01 |
[Day6][Java] For 문제풀이 / 별 찍기 (0) | 2019.09.01 |
[Day5][Java] switch case / 반복문(for) / break / continue (0) | 2019.09.01 |
[Day3][Java] 생성자 / 형변환 / 연산자 (0) | 2019.09.01 |