자바_기초 특강 2일차 (총 4일)
기초특강 2일차 (총 4일) -> 코딩 시작시, 미술 스캐치 후 하는거처럼,
뭘 넣을건지, 어떤 형태로 넣을건지 대략적으로 생각하고 넣기.
하드 코딩 vs 소프트 코딩. 소프트 코딩이 난이도는 높고 구현이 빡빡하지만 차후 좋다.
package day02;
// 연산자 04
// 논리 연산자
// 논리 연산자는 boolean 값에 대한 연산을 한다.
// AND 연산자 : &&로 표시하며 왼쪽과 오른쪽이 모두 true일 때에만 true가 결과값으로 연산된다.
// OR 연산자 : || 로 표시하며 왼쪽이나 오른쪽 중 하나라도 true이면 true가 결과값으로 연산된다.
// NOT 연산자 : !로 표시하며 뒤의 boolean 값의 반대값을 연산해준다.
public class Ex01Operator04 {
public static void main(String[] args) {
// 1. AND 연산자의 경우
System.out.println("1. AND");
System.out.println("true && ture: " + (true && true));
System.out.println("true && false: " + (true && false));
System.out.println("false && ture: " + (false && true));
System.out.println("false && false: " + (false && false));
System.out.println();
// 2. OR 연산자의 경우
System.out.println("2. OR");
System.out.println("true || true: " + (true || true));
System.out.println("true || false: " + (true || false));
System.out.println("false || true: " + (false || true));
System.out.println("false || false: " + (false || false));
System.out.println();
// 3. NOT 연산자의 경우
// boolean 변수 myBool을 선언하고 true로 초기화해보자
boolean myBool = true;
System.out.println("3.NOT");
System.out.println("myBool의 현재 값: " + myBool);
System.out.println("!myBool: " + !myBool);
System.out.println("myBool의 현재 값: " + myBool);
// 변수에 저장된 숫자가 1이상 0이하가 맞는지 체크하는 코드
// 1 <= x <= 10
int x = 4;
boolean result = (1 <= x && x <= 10);
System.out.println("result의 현재 값: " + result);
}
}
-----------------------------------------------------------------------------------------------
package day02;
// 자바 콘솔화면에 출력하는 3가지 대표적인 방법
// 1. print(): ()안의 내용을 그대로 출력하고, 만약 그 다음에 출력할 내용이 있으면
// 출력된 내용의 오른쪽 칸부터 출력을 시작해라.
// 2. println() print a line의 줄임말로서, ()안의 내용을 그대로 출력하고
// 만약 그 다음 출력할 내용이 있으면 출력된 내용의 다음 줄의 첫번째 칸부터출력을 시작해라.
// 3. printf() : print in format의 줄임말로써 ()안의 내용을 지정한 형식대로 출력하고
// 만약 그 다음에 출력할 내용이 있으면 출력된 내용의 오른쪽 칸부터 출력을 시작해라.
public class Ex02Print {
public static void main(String[] args) {
// 출력할 내용을 저장한 String 변수 str1, str2
String str1, str2;
// str1에 "ABCD", str2에 "efgh"를 저장
str1 = "ABCD";
str2 = "efgh";
// print()
System.out.print("1. print()");
System.out.print(str1);
System.out.print(str2);
System.out.println();
// println()
System.out.println("2. println()");
System.out.println(str1);
System.out.println(str2);
System.out.println();
// printf()
System.out.println("3. println()");
System.out.printf("%s", str1);
System.out.printf("%S", str2);
System.out.println();
// 번외. 이스케이프 문자
System.out.println();
System.out.println("번외. 이스케이프 문자");
// 이스케이프 문자란, 공백 혹은 프로그래밍안에서 다른 의미로 쓰이는 문장 부호를
// 한개의 문자로 취급하기 위해 사용되는 특수한 문자들이다.
// 이스케이프 문자는 주로 \+알파벳 혹은 문장 부호로 이루어져 있다.
// 또한 글자의 갯수는 2개이지만 실제론 한개의 문자로 취급된다.
// 1. 개행문자(\n)
// 개행문자란 곧장 다음줄의 첫번째 칸으로 이동하는 이스케이프 문자이다.
System.out.println("1. 개행문자");
System.out.println("ABCD\nefgh");
// 2. 탭공백(\t)
// 탭공백이란 여러개의 스페이스 크기의 공백을 뜻한다.
System.out.println("2. 탭공백");
System.out.println("ABCD\tefgh");
// 3. 쌍따옴표(\")
System.out.println("3. 쌍따옴표");
System.out.println("\"내 사전에 불가능이란 없다.\"");
System.out.println(123);
// 4. 따옴표(\')
System.out.println("4. 따옴표");
System.out.println('\'');
// 5. \
System.out.println("5. ");
System.out.println("C:\\users\\bitcamp\\Documents");
}
}
-----------------------------------------------------------------------------------------------
package day02;
// printf
// printf는 우리가 출력할 내용 중 만약 형식을 맞추어줄 것이 있으면
// %문자 라는 것을 사용하여 특정 형식에 특정 값을 대입해주는 느낌으로
// 입력하면 출력될 때에 그 형식에 맞추어 값이 출력되게 된다.
public class Ex03Printf {
public static void main(String[] args) {
System.out.println("1. 10진법 정수('d'ecimal");
// 출력할 정수
int number = 347;
// A. 10진법 정수를 그대로 출력해라
System.out.printf("1-A. [%d]\n", number);
// B. 10진법 정수를 오른쪽 정렬 네자리로 맞추어 출력해라
System.out.printf("1-B. [%4d]\n", number);
// C. 10진법 정수를 오른쪽 정렬 두자리로 맞추어 출력해라
// 만약 출력할 내용이 내가 지정한 자릿수보다 많으면
// 지정한 자릿수는 무시가 된다. (3자린데 2자리라 무시됨)
System.out.printf("1-C. [%2d]\n", number);
// D. 10진법 정수를 왼쪽 정렬 4자리로 맞추어 출력해라
System.out.printf("1-D. [%-4d]\n", number);
// E. 10진법 정수를 오른쪽 정렬 네자리로 맞추고
// 왼쪽에 빈자리가 있으면 0으로 채워서 출력해라
System.out.printf("1-E. [%04d]\n", number);
System.out.println("-------------------------\n");
System.out.println("2. 실수('f'loat");
// 출력할 내용을 담은 변수
double myDouble = 23.45;
// A. 실수를 그대로 출력해라.
System.out.printf("2-A. [%f]\n", myDouble);
// B. 실수를 오른쪽 정렬 16자리로 맞추어 출력해라.
System.out.printf("2-B. [%16f]\n", myDouble);
// C. 실수를 왼쪽 정렬 16자리로 맞추어 출력해라.
System.out.printf("2-B. [%-16f]\n", myDouble);
// D. 실수를 소숫점 첫번째 자리까지 맞추어 출력해라.
System.out.printf("2-D. [%.1f]\n", myDouble);
// E. 실수를 오른쪽 정렬 8자리로 맞추고
// 소숫점 두번째 자리까지 출력하되 오른쪽 빈자리는 0으로 채워서 출력해라.
System.out.printf("2-E. [%08.2f]\n", myDouble);
System.out.println("-------------------------\n");
System.out.println("3. 스트링('s'tring)");
// 출력할 내용을 저장할 변수 왼쪽을 0으로 채워라가 성립할 수 없음.
String str = "abCD";
// A. 스트링을 그대로 출력해라
System.out.printf("3-A.[%s]\n", str);
// B. 스트링을 모두 대문자로 출력해라
System.out.printf("3-B.[%S]\n", str);
// C. 스트링을 오른쪽 정렬 8자리로 맞추어 출력해라
System.out.printf("3-C.[%8s]\n", str);
// D. 스트링을 왼쪽 정렬 8자리로 맞추어 출력해라
System.out.printf("3-C.[%-8s]\n", str);
System.out.println("-------------------------\n");
System.out.println("4. printf()를 쓸 때 주의해야할 사항들");
// 1. 잘못된 %문자를 사용하면 에러가 발생한다.
// System.out.printf("%q\n", number);
// 2. %문자와 값의 데이터타입이 맞지 않으면 에러가 발생한다.
// System.out.printf("%d\n", myDouble);
// 3. %문자의 갯수가 출력대상으로 입력한 값의 갯수보다 적으면?
System.out.printf("1. %d 2. %d 3. %d\n", 1, 10, 100, 1000, 10000);
// 4. 하지만 %문자의 갯수가 출력대상으로 입력한 값의 갯수보다 많으면?
// System.out.printf("1. %d 2. %d 3. %d\n", 1, 10);
// 5. 만약 %문자의 %가 아닌 글자 %를 입력해야하는 경우, %%라고 입력해주면 된다.
System.out.printf("다운로드: %.2f%% 완료\n", 80.0);
// 6. 한개의 printf는 다양한 %문자를 조합해서 사용할 수 있다.
System.out.printf("우리가 배운 %%문자들: %d %f %s\n", number, myDouble, str);
}
}
-----------------------------------------------------------------------------------------------
package day02;
// Scanner
// Scanner 클래스느 자바에서 다양한 입력을 처리해주는 대표적인 클래스들 중 하나이다.
// 키보드 입력, 파일 입력, 스트림 입력 등 다얗안 입력이 있지만
// 우리는 그 중에서 키보드 입력에 대해 알아볼 것이다.
// 단, 우리가 한가지 알아두어야 할 것은
// 자바에서 기본형 데이터타입을 클래스로 포장시킨 "포장 클래스(Wrapper Class)"가 아닌
// 클래스를 사용할 때에는 반드시 "수입"해와야 한다.
// 수입을 하는 방법은 다음과 같다.
// import 수입할 클래스;
// 이 import 명령어는 반드시 public class ~~~~~ 이전에 나와야하고
// 또한 우리가 수입할 클래스마다 개별적으로 import 코드를 적어주어야한다.
// 지금 같은 경우는 java.util.Scanner 라는 클래스를 수입해와야하므로
import java.util.Scanner;
// 라고 적어주어야 한다.
public class Ex04Scanner {
public static void main(String[] args) {
// Scanner 클래스 변수의 선언 아래 스캐너 2개는 각 클래스, 변수임
Scanner scanner;
// Scanner 클래스 변수의 초기화
// Scanner 클래스 변수를 초기화할 때에는
// 해당 변수가 어디서데이터를 읽어올지를 반드시 지정해야한다.
// 지금같은 경우에는 키보드의 입력을 읽어와야하므로
// System.in 에서 데이터를 읽어오도록 지정해야한다.
scanner = new Scanner(System.in);
// 1. 정수 입력 받기
// 키보드로부터 정수를 입력받을 때에는
// Scanner 클래스 변수의 newxtInt() 메소드를 실행하여 입력을 받는다.
System.out.println("정수를 입력해주세요.");
System.out.print("> ");
// 키보드로부터 입력을 받아서 만약에 정수이면
// number에 그 수를 저장해라
int number = scanner.nextInt();
// 사용자가 입력한 정수를 화면에 출력한다.
System.out.println("사용자가 입력한 정수: " + number);
// 2. 실수 입력
// 사용자로부터 실수를 입력받을 때에는 nextDouble()을 사용하면 된다.
System.out.print("실수를 입력해주세요");
System.out.print("> ");
// 사용자가 입력한 키보드 입력값이 double의 형태가 맞으면
// double 변수 d에 그 값을 저장한다.
double d = scanner.nextDouble();
// 사용자가 입력한 실수를 화면에 출력한다.
System.out.println("사용자가 입력한 실수: " + d);
// Scanner 클래스 변수와 같이
// 외부로부터의 입력을 읽어올 때에는
// 버퍼 메모리라는 임시 저장소를 감시하는 상태가 된다.
// 따라서 리소스를 절약하기 위해서는
// 반드시 더이상 사용하지 않을 경우
// close()라는 메소드를 호출하여 더이상 버퍼 메모리를 감시하지 않도록
// 만들어주어야 한다.
scanner.close();
}
}
-----------------
// 사용자로부터
// 번호, 이름, 국어, 영어, 수학 점수를 차레대로 입력 받아서
// 번호 : ##번 이름: ###
// 국어 0##점 영어0##점 수학: 0##점
// 총점: 0##점 평균: 0##.##점
// 의 형식으로 출력되는 프로그램을 작성해보세요
// 20분간.
내가 쓴 코드.
package day02;
import java.util.Scanner;
public class Gradebook01 {
public static void main(String[] args) {
Scanner scanner;
scanner = new Scanner(System.in);
int number = scanner.nextInt();
System.out.println("번호를 입력하세요");
number = scanner.nextInt();
System.out.println("> ");
System.out.println("번호: " + number);
String name = scanner.nextLine();
int korea = scanner.nextInt();
int math = scanner.nextInt();
int english = scanner.nextInt();
double total = scanner.nextDouble();
---------------------------------
정답코드
package day02;
// 사용자로부터
// 번호, 이름, 국어, 영어, 수학 점수를 차레대로 입력 받아서
// 번호 : ##번 이름: ###
// 국어 0##점 영어0##점 수학: 0##점
// 총점: 0##점 평균: 0##.##점
// 의 형식으로 출력되는 프로그램을 작성해보세요
// 30분까지
import java.util.Scanner;
public class Gradebook01 {
public static void main(String[] args) {
// 마술의 숫자를 제거하기 위한 상수들
// 1. 과목의 숫자
final int SUBJECT_SIZE = 3;
// 입력을 처리할 Scanner 클래스 변수의 선언과 초기화
Scanner scanner = new Scanner(System.in);
// 1. 입력
// A. 번호 입력
System.out.println("번호를 입력해주세요.");
System.out.print("> ");
int id = scanner.nextInt();
// B. 이름 입력
System.out.print("이름을 입력해주세요.");
System.out.print("> ");
scanner.nextLine();
String name = scanner.nextLine();
// C. 국어 점수 입력
System.out.println("국어 점수를 입력해주세요.");
System.out.print("> ");
int korean = scanner.nextInt();
// D. 영어 점수 입력
System.out.println("영어 점수를 입력해주세요.");
System.out.print("> ");
int english = scanner.nextInt();
// E. 수학 점수 입력
System.out.println("수학 점수를 입력해주세요.");
System.out.print("> ");
int math = scanner.nextInt();
// 2. 출력
// 총점 계산 후 변수에 저장
int sum = korean + english + math;
// 평균 계산 후 변수에 저장
double average = (double)sum / SUBJECT_SIZE;
// 번호 : ##번 이름: ###
System.out.printf("번호: %d번 이름: %s\n", id, name);
// 국어 0##점 영어0##점 수학: 0##점
System.out.printf("국어: %03d점 영어: %03d점 수학: %03d점\n", korean, english, math);
// 총점: 0##점 평균: 0##.##점
System.out.printf("총점: %03d점 평균: %06.2f점\n", sum, average);
// 의 형식으로 출력되는 프로그램을 작성해보세요
// 더이상 입력할 것이 없으므로 close() 실행
scanner.close();
}
}
package day02;
// 제어문(Control Statement)
// 제어문이란, 코드의 실행 여부 혹은 반복 여부를 결정하는 특수한 코드이다.
// 제어문에는 크게 조건문과 반복문이 있다.
// 조건문: 특정 조건을 만족하면 코드를 실행
// 반복문: 특정 조건을 만족하는 동안 코드를 반복. for문과 while문이 있다.
// switch문을 제외한 나머지 3가지 제어문들은 모두 조건식을 필요로 한다.
// 조건식이란, 최종 결과값이 true 혹은 false의 boolean 데이터타입이 나오는
// 코드를 우리가 조건식이라고 한다.
// 코드 블록
// 코드 블록이란 한개의 중괄호 사이의 모든 코드들을 한개의 코드 블록이라고 한다.
// 한개의 코드 블록 안에는 여러개의 코드 블록이 들어갈 수도 있다.
// 코드 블록은 제어문에서 어떤 코드를 실행 혹은 반복할지를 결정하거나
// 변수의 유효범위를 결정한다.
// 변수의 유효범위(Scope)
// 변수의 유효범위란 특정 변수가 어디서부터 어디까지 유효한지를 뜻한다.
// 당연히 해당 유효범위를 벗어나면 해당 변수는 존재하지 않는 것이기 때문에
// 우리가 값을 저장하거나 저자된 값을 호출할 수 없다.
// 변수가 유효한 범위는 해당 변수가 선언된 이후부터
// 그 변수가 속해있는 코드 블록이 끝나기 전까지이다.
public class Ex05Control {
}
package day02;
// 조건문 01
// if 조건문1
// if 조건문은 특정 조건식이 true가 나오면
// 해당 조건문에 연결된 코드 블록을 실행시키고
// 만약 false가 나오면 실행시키지 않는다.
// 기본적으로 if 조건문은 다음과 같은 형식을 가진다.
// if(조건식) {
// 실행할 코드
// }
public class Ex06If {
public static void main(String[] args) {
// int 변수 number를 선언하고 5를 저장
int number = -5;
// 만약 number가 0보다 크면 "0보다 큽니다"를 출력한다.
if(number > 0) {
System.out.println("0보다 큽니다");
int number2 = 7; //아래 문구는 20~22번 코드까지가 유효함.
System.out.println("number2: " + number2);
}
}
}
package day02;
// 조건문 01
// if 조건문2
// if-else 구조 (else는 단독적으로 활용이 안됨. if문에 연결되어야함)
// 만약 if문의 조건식이 true가 나오면
// if문의 연결된 코드 블록이 실행되고
// 만약 false가 나오면
// else 코드 블록이 실행된다.
// if=else는 다음과 같은 구조를 가진다.
// if(조건식) {
// 조건식이 참일 때 실행할 코드
// } else {
// 조건식이 거짓일 때 실행할 코드
// }
public class Ex07IfElse {
public static void main(String[] args) {
// int 변수 number 선언 후 5 저장
int number = -5;
if(number > 0) {
System.out.println("0보다 큽니다.");
} else {
System.out.println("0보다 작거나 같습니다.");
}
}
}
package day02;
// 조건문 01
// if - else if 구조
// 만약 첫번째 조건식을 체크하여
// false가 나왔을 때 다른 조건식을 체크하고
// 이렇게 순차적으로 계단식 구조를 통하여
// 실행할 코드가 있다면
// if - else if 구조를 사용하게 된다.
// if - else if 구조는 다음과 같다.
// if(조건식1) {
// 조건식1이 참일 때 실행할 코드
// }else if(조건식2) {
// 조건식 2가 참일 때 실행할 코드
// }else if(조건식3) {
// ...
// }else {
// 위 조건식이 모두 false일 때 실행할 코드
// }
public class Ex08IfElseIf {
public static void main(String[] args) {
// int 변수 number 선언 후 5 저장
int number = 4;
// number가 1일때: "1입니다."
// number가 2일때: "2입니다."
// number가 3일때: "3입니다."
// 그외: "그외입니다"
// 가 출력되는 if-else if 구조
if(number == 1) {
System.out.println("1입니다.");
} else if (number == 2) {
System.out.println("2입니다.");
} else if (number == 3) {
System.out.println("3입니다.");
} else {
System.out.println("그외입니다.");
}
}
}
package day02;
// 사용자로부터
// 번호, 이름, 국어, 영어, 수학 점수를 차레대로 입력 받아서
// 번호 : ##번 이름: ###
// 국어 0##점 영어0##점 수학: 0##점
// 총점: 0##점 평균: 0##.##점
// 의 형식으로 출력되는 프로그램을 작성해보세요
// 30분까지
import java.util.Scanner;
public class Gradebook01 {
public static void main(String[] args) {
// 마술의 숫자를 제거하기 위한 상수들
// 1. 과목의 숫자
final int SUBJECT_SIZE = 3;
// 입력을 처리할 Scanner 클래스 변수의 선언과 초기화
Scanner scanner = new Scanner(System.in);
// 1. 입력
// A. 번호 입력
System.out.println("번호를 입력해주세요.");
System.out.print("> ");
int id = scanner.nextInt();
// B. 이름 입력
System.out.print("이름을 입력해주세요.");
System.out.print("> ");
scanner.nextLine();
String name = scanner.nextLine();
// C. 국어 점수 입력
System.out.println("국어 점수를 입력해주세요.");
System.out.print("> ");
int korean = scanner.nextInt();
// D. 영어 점수 입력
System.out.println("영어 점수를 입력해주세요.");
System.out.print("> ");
int english = scanner.nextInt();
// E. 수학 점수 입력
System.out.println("수학 점수를 입력해주세요.");
System.out.print("> ");
int math = scanner.nextInt();
// 2. 출력
// 총점 계산 후 변수에 저장
int sum = korean + english + math;
// 평균 계산 후 변수에 저장
double average = (double)sum / SUBJECT_SIZE;
// 번호 : ##번 이름: ###
System.out.printf("번호: %d번 이름: %s\n", id, name);
// 국어 0##점 영어0##점 수학: 0##점
System.out.printf("국어: %03d점 영어: %03d점 수학: %03d점\n", korean, english, math);
// 총점: 0##점 평균: 0##.##점
System.out.printf("총점: %03d점 평균: %06.2f점\n", sum, average);
// 의 형식으로 출력되는 프로그램을 작성해보세요
// 더이상 입력할 것이 없으므로 close() 실행
scanner.close();
}
}
package day02;
// 사용자로부터 점수를 입력받아서
// 90이상 : A
// 80이상 : B
// 70이상 : C
// 60이상 : D
// 그외 : F
// 가 출력되는 프로그램을 작성해보세요.
import java.util.Scanner;
public class letterGrade {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("점수를 입력해주세요.");
System.out.print("> ");
int score = scanner.nextInt();
if (score >= 90) {
System.out.println("A");
} else if (score >= 80) {
System.out.println("B");
} else if (score >= 70) {
System.out.println("C");
} else if (score >= 60) {
System.out.println("D");
} else {
System.out.println("F");
}
scanner.close();
}
}