[0] day5복습
/**
* Date : 2023.03.28
Author : funling
Description : day5복습
*/
package Java0328;
public class _00_review {
public static void main(String[] args) {
/*
while문
for문 - while문 차이
반복횟루를 정한 for문
while문은 조건에 따라 반복횟수가 달라진다
while문 - do-while문의 차이
while문 : 반복문을 실행하기 전에 조건문을 검사
조건이 맞지 않으면 반복을 실행하지 않을수도 있다.
do-while문 : 반복문을 실행하고 나서 조건문을 검사
반드시 한번은 반복문을 실행한다.
배열(array) : []
: 같은 타입의 데이터를 하나의 변수에 저장하는 구조
: 총점, 평균 구하는 예제, 코인예제
배열의 크기(length)
배열이름.length >> int타입의 값(숫자)을 구할 수 있다.
*/
int[] nums = {10, 20, 30, 40};
for(int i =0; i <nums.length; i++) {
System.out.println("num["+ i+ "] : "+nums[i]);
}
}
}
//출력
[1] array 배열 예제 [1]
/**
* Date : 2023.03.28
Author : funling
Description : array 배열 예제 [1]
*/
package Java0328;
import java.util.Scanner;
public class _01_arrExample1 {
public static void main(String[] args) {
// Q. 3개의 정수를 입력받아서 가장 큰 수를 찾기!
// 크기가 3인 배열 arrInt를 만들어서 구하기
Scanner sc = new Scanner(System.in);
int[] arrInt = new int[3];
int max = 0;
System.out.print("숫자 "+ arrInt.length+"개 입력 : ");
for(int i=0; i<arrInt.length; i++) {
arrInt[i] = sc.nextInt(); // arrInt[0] <= 10
// arrInt[1] <= 5
// arrInt[2] <= 20
if(arrInt[i] > max) {
max = arrInt[i];
}
}
System.out.println("가장큰수는 : "+max+"입니다");
}
}
//출력
[2] 배열을 이용한 성적서 만들기 (중요!) 다시한번 보기
// Q. 성적서 만들기 TEST.
// 배열을 사용한 성적입력 프로그램 만들기
// while문, switch문 사용
// switch
// 1. 학생수 : 몇명의 학생 성적을 처리할지
// 2. 점수입력 : 학생수만큼 점수를 입력하기
// 3. 점수출력 : 학생수만큼 점수를 출력하기
// 4. 점수분석 : 총점, 평균, 최고점수를 받은 학생
// 5. 종료 : 프로그램 종료
// default : "잘못 입력했습니다" 출력
/**
* Date : 2023.03.28
Author : funling
Description : 배열을 이용한 성적서 만들기
*/
package Java0328;
import java.util.Scanner;
public class _02_arrExample2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean run = true;
int menu;
// 학생수를 입력받기 위한 변수
int stuNum = 0;
// 점수를입력 받기 위한 배열(빈 배열)
int[] scores = null;
while(run) {
System.out.println("=================================================");
System.out.println("1.학생수 | 2.점수입력 | 3.점수출력 | 4.점수분석 | 5.종료");
System.out.println("=================================================");
System.out.print("선택 : ");
menu = sc.nextInt();
switch(menu) {
case 1: // 1. 학생수 : 몇명의 학생 성적을 처리할지
System.out.println(" 학생 수 : ");
stuNum = sc.nextInt();
break;
case 2: // 2. 점수입력 : 학생수만큼 점수를 입력하기
scores = new int[stuNum];
// 점수를 입력하기 위한 배열의 크기만큼 반복문 실행
// scores.length(배열의 크기) == stuNum(학생수)
for(int i=0; i<scores.length; i++) {
System.out.println((i+1)+"번 학생 점수 : ");
scores[i] = sc.nextInt();
}
break;
case 3: // 3. 점수출력 : 학생수만큼 점수를 출력하기
for(int i=0; i<scores.length; i++) {
System.out.println((i+1)+"번 학생 점수출력 : "+scores[i]);
}
break;
case 4: // 4. 점수분석 : 총점, 평균, 최고점수를 받은 학생
int sum = 0;
double avg = 0;
int max = 0;
int idx = 0;
for(int i=0; i<scores.length; i++) {
//총점
sum += scores[i];
//최고점수
if(scores[i] > max) {
max = scores[i];
}
// 최고점수 받은 학생
if(max==scores[i]) {
idx = i+ 1;
}
}
System.out.println("합계 : " + sum);
//평균
avg = (double)sum / scores.length;
// 소숫점 한자리까지 반올림
avg = Math.round(avg * 100) / 100.0;
System.out.println("평균 : "+ avg);
System.out.println("최고점수 : "+ max +"점(" + idx+"번 학생)");
break;
case 5: // 5. 종료 : 프로그램 종료
run = false;
System.out.println("프로그램 종료 ");
break;
default: // default : "잘못 입력했습니다" 출력
System.out.println("잘못 입력했습니다.");
break;
}
}
}
}
//출력
[3] 2차원 배열 [][] 기본개념 암기!_(복습!!)
/**
* Date : 2023.03.28
Author : funling
Description : 2차원 배열
*/
package Java0328;
public class _03_2array {
public static void main(String[] args) {
// 2차원 배열
// 타입[][] 배열이름 = new 타입[i][j];
// i : 행의 갯수, j : 열의 갯수
int[][] numbers = {
{0, 1, 2},
{3, 4, 5}
};
// i = > 2, j = > 3 행과열은 작게!
for( int i=0 ; i<2 ; i++) /*i<numbers.length*/{
for( int j=0 ; j<3 ; j++) /*j<numbers[i]*/ {
System.out.println("number["+i+"]["+j+"] : "+numbers[i][j]);
}
}
System.out.println("numbers[2][3]의 2차원 배열크기");
System.out.println("numbers.length(i크기) :" + numbers.length);
System.out.println("numbers.length(i크기) :" + numbers[0].length);
System.out.println("numbers.length(j크기) :" + numbers[0].length);
}
}
//출력
[4] 2차원 배열 [][] 구구단!
/**
* Date : 2023.03.28
Author : funling
Description : 2차원 배열 구구단
*/
package Java0328;
public class _04_multiTable {
public static void main(String[] args) {
/*
2차원 배열을 활용한 구구단 만들기!
2단부터 9단까지
*/
// int[][] multi = new int[10][10];
// i = 0 ~ 9
// j = 0 ~ 9
// for(int i=2; i<multi.length; i++) {
// System.out.println(i +"단");
// for(int j=1; j<multi[i].length; j++) {
// System.out.println(i + "x" + j + "=" + i*j);
// }
// System.out.println();
// }
int[][] multi = new int[8][9];
for(int i=0; i<multi.length; i++) {
System.out.println("===" + (i+2) + "단 ===");
for(int j=0; j<multi[i].length; j++) {
System.out.println((i+2) +"x"+(j+1)+ "="+(i+2)*(j+1));
}
}
}
}
//출력
[5] 2차원 배열 [][] 단어 맞추기 게임! (복습!)
/**
* Date : 2023.03.28
Author : funling
Description : 2차원 배열 단어 맞추기
*/
package Java0328;
import java.util.Scanner;
public class _05_wordGame {
public static void main(String[] args) {
/*
영단어 맞추기 게임
String[][] word;
words[5][2];
i는 문제수,
j가 0일때 단어, j가 1일때 뜻
*/
/* 추가적인 문제
1. while, switch을 사용해서 프로그램 구성
2. 문제 갯수를 입력
3. 문제, 뜻, 예문 입력 ex) words[n][2] >> words[n][3]
4. 문제 갯수를 가지고 정답률 계산
*/
// String[][] words = {
// {"chair", "의자"},
// {"desk", "책상"},
// {"water", "물"},
// {"pencil", "연필"},
// {"watch", "시계"}
//
// };
//
// Scanner sc = new Scanner(System.in);
// int score = 0; //정답 갯수
//
// // 문제 갯수만큼 반복문 실행
// for(int i = 0; i <words.length; i++) {
//
// System.out.println((i+1)+"번 문제. " + words[i][0]+ "의 뜻은? ");
//
// // 정답 입력
// String answer = sc.next();
//
// // 정답 확인
// // answer == words[][]은 틀림
// // String타입을 비교하기 위해 .equals() 사용한다.
// if(answer.equals(words[i][1])) {
// System.out.println("정답입니다!\n");
// score ++;
// } else {
// System.out.println("틀렸습니다. 정답은 " + words[i][1] + "입니다.\n");
// }
// }
// System.out.println("맞춘 갯수는" + score +"개");
Scanner sc = new Scanner(System.in);
boolean run = true;
int menu;
int qNum = 0;
// 문제,뜻, 예문을 입력받기 위한 배열(빈 배열)
String[][] words = null;
// 정답 갯수
int score = 0;
while(run) {
System.out.println("=================================================");
System.out.println("1.문제수 | 2.문제출제 | 3.문제풀기 | 4.점수분석 | 5.종료");
System.out.println("=================================================");
System.out.print("선택 : ");
menu = sc.nextInt();
switch(menu) {
case 1:
System.out.println(" 문제수 : ");
qNum = sc.nextInt();
break;
case 2:
words = new String[qNum][3]; //배열초기화
score =0; //정답갯수 초기화
for(int i=0; i<words.length; i++) {
System.out.println((i+1)+"번 단어 점수 : ");
words[i][0] = sc.next();
System.out.println((i+1)+"번 뜻 : ");
words[i][1] = sc.next();
sc.nextLine().trim();
System.out.println((i+1)+"번 예문 : ");
words[i][2] = sc.nextLine();
}
break;
case 3:
for(int i = 0; i <words.length; i++) {
System.out.print((i+1)+"번 문제. " + words[i][0]+ "의 뜻은? ");
String answer = sc.next();
if(answer.equals(words[i][1])) {
System.out.println("정답입니다!\n");
score ++;
} else {
System.out.println("틀렸습니다. 정답은 " + words[i][1] + "입니다.\n");
}
System.out.println("(예문)" + words[i][2] +"\n");
}
break;
case 4:
System.out.println("맞춘 갯수는" + score +"개");
double percent = ((double)score / words.length) * 100;
System.out.println("정답률" + percent+"% 입니다");
break;
case 5:
run = false;
System.out.println("맞춘 갯수는" + score +"개");
break;
default:
System.out.println("종료");
break;
}
}
}
}
// 문제 확인 그다음 코딩 진행해보기!! 자세히 보아야 한다!
[6] 자바는 객체지향 프로그래밍 이다!!
[1] 자바는 객체지향 프로그래밍이다.
- OOP(Object - Oriented - Programming)
- 프로그래밍 하기 위해서 단위(객체)로 잘게 나뉘서 코딩
- 다시 이것들 조립해서 복잡한 프로그램을 만드는 것
(1) 절차지향 : 순서대로 진행되는 프로그램
ex) 급식소에서 줄을 서서 밥을 먹는 것
ex) 맞춤옷 : 원하는 형태로 만들어서 입는 것
(2) 객체지향 : 객체(클래스)라는 작은 단위로 프로그래밍 하는 것
ex) 부페에세 내가 원하는 음식을 가져와서 먹는 것
ex) 기성옷 : 내몸에 맞는 것을 골라 입는 것
단점 : 불필요한 메모리가 생길수 있음
[2] 객체 모델링(Object Modeling)
- 현실 세계의 객체를 소프트웨어 객체로 설계하는 것
[3] 클래스와 객체
(1) 클래스(설계도) : 샌드위치 레시피, 스마트폰 설계도
(2) 객체(실제로 존재하는 물건이나 개념) : 샌드위치, 스마트폰
- 다른 것과 식별이 가능한 것
- 자신만의 고유한 특성과 행동을 가지며, 다른 객체들과 상호작용 한다.
- 클래스에서 인스턴스(instance)라고 부른다.
[4] 객체의 특성 3가지
(1) 캡슐화(Encapsulation) : 정보은닉
(2) 상속(Inheritance) : 부모-자식
(3) 다형상(Polymorphism) : 상속에서 사용, 같은코드 - 다른 출력
public class _07_classElerment {
/*
클래스의 기본 구성
(1) 필드
(2) 생성자
(3) 메소드
(접근제한자) class 클래스이름(
(1) 필드
(2) 생성자
(3) 메소드
(모든 생략 가능)
*/
// 메인 함수(메소드)
public static void main(String[] args) {
// public : 접근제한자(public : 모두에게 공개)
// static : 정적(객체를 생성하지 않고 사용가능)
// void : 데이터타입(return값 가지지 않는다)
// main : 메소드 이름
// (String[] args) : 매게변수 => ()안의 내용을 메소드에서 사용한다.
}
/*
[1] 필드(field) : 속성, 상태, 특성
- 명사형
- '멤버변수'라고 부르기도 한다.
- 값의 상태를 관리
- 데이터를 저장하는 공간
ex) int num = 3;
[2] 생성사(Constructor)
- 객체를 만들때 따라야 하는 규칙 정의
- 객체생성을 도와주는 블록
- 생성자 이름은 클래스 이름 동일 작성
[3] 메소드(method) : 동작, 행동, 기능
- 동사형
- 특정한기능을 정의한 블록
- 문자보내기 전화하기 동작하는것 메소드 블록에 넣어둔다
- 메소드가 호출되면 자신이 가지고 있는 기능을 수행
- 기능 수행이 끝나면 리턴값이 존재
*/
// 생성자
class 두렵당ㅎㅎ
'IT코딩공부!' 카테고리의 다른 글
#8 day7복습, 팀별 과제 수행, Intelli J 설치 및 이클립스 적용 (0) | 2023.03.30 |
---|---|
#7 day6복습, 필드,생성자,메소드(main)공부 (0) | 2023.03.29 |
#5 day4복습, while문 공부 (0) | 2023.03.27 |
#4 day3복습, for문 공부 (0) | 2023.03.24 |
#3. day2아침 복습, if(조건문)공부 (0) | 2023.03.23 |