import java.util.Scanner;
public class Ex06 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//실제 답을 저장하고 있는 배열
int[]answer= {1,4,3,2,1};
//사용자가 입력한 답을 저장하는 배열
int[] input = new int[5];
for(int i =0; i<input.length; i++) {
System.out.print(i+1 + "번답 >> ");
input[i]=sc.nextInt();
}
//input 배열에 있는 값 출력
for(int i =0; i<input.length; i++) {
System.out.print(input[i]+ " ");
}
int sum =0; //총합을 저장할 변수
System.out.println();
//답을 비교하는 반복문
for(int i=0; i<input.length; i++) {
if(answer[i]==input[i]) {
System.out.print("o");
sum+=20;
}else {
System.out.print("x");
}
}
System.out.println("총합 : "+ sum);
}
}
package 배열;
import java.util.Scanner;
public class ex08 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] id_arr = new String[3];
String[] pw_arr = new String[3];
int cnt =0; // 현재 몇명이 가입했는지 저장할 변수
while(true) {
System.out.println("1.회원가입 2.로그인 3.종료");
int menu =sc.nextInt();
if(menu==1) {// 회원가입
if(cnt<3) {
System.out.print("id>> ");
id_arr[cnt]= sc.next();
System.out.print("pw>> ");
pw_arr[cnt]=sc.next();
cnt++;
}else {
System.out.println("더이상 가입할 수 없습니다");
}
}else if(menu==2) {//로그인
System.out.print("id>> ");
String id= sc.next();
System.out.print("pw>> ");
String pw = sc.next();
boolean sw = false; // 로그인을 성공/시류ㅐ 저장할 변수
for(int i=0;i<cnt; i++) {
if(id_arr[i].equals(id)&&pw_arr[i].equals(pw)) {
System.out.println("로그인성공!");
sw = true;
break;
}
}
if(sw==false) {
System.out.println("로그인 실패!");
}
}else {//3
System.out.println("프로그램 종료");
break;
}
}
}
}
이차원배열
배열의 요소로 1차원 배열을 가지는 배열
[이차원배열의 구조]
5개의 열이 있고 한 열당 좌석 3개가 있는 영화관
[이차원배열의 생성]
[이차원배열의 생성]
int[][]seat = new int [5][3];
seat[0][0]=1;
>seat의 0번째 배열의 0번열에 값 할당
seat[3][2]=20;
>seat의 3번째 배열의 2번열에 값 할당
[이차원배열의 초기화]
int[][]intArray = {{0,1,2},{3,4,5},{6,7,8}};
char charArray[][]={{'a','b','c'}{'d','e','f'}};
double dobleArray[][]={{0.01, 0.02}, {0.03,0.04}};
package 이차원배열;
public class Ex01 {
public static void main(String[] args) {
int[][] arr; //2차원배열의 레퍼런스 배열의 참조값을 가지는 레퍼런스 변수
arr = new int[3][5]; // 3행(레퍼런스 배열 길이) 5열(실제값이 들어가는 배열의 길이) 2차원 배열 생성
arr[0][0]=1;
arr[2][3]=3;
int[][]arr2 = {{1,2,3},{2,3,4}};
//배열 크기
System.out.println(arr2.length); //레퍼런스 배열의 길이(행의 개수)
System.out.println(arr2[0].length); // 실제값을 가지는 배열의 길이(열의 개수)
}
}
package Aug_seventeenth_reviw;
public class ex08 {
public static void main(String[] args) {
int[][] arr; //2차원배열의 레퍼런스 배열의 참조값을 가지는 레퍼런스 변수
int[][] arr3 = new int[5][5];
int num =1;
//값 입력
for(int i=0;i<arr3.length;i++) {
for(int j=0;j<arr3[i].length;j++) {
arr3[i][j]= num++;
}
}
//값 출력
for(int i=0;i<arr3.length;i++) {
for(int j=0;j<arr3[i].length;j++) {
System.out.print(arr3[i][j]+"\t");
}
System.out.println();
}
}
}
package Aug_seventeenth_reviw;
public class ex08 {
public static void main(String[] args) {
int[][] arr; //2차원배열의 레퍼런스 배열의 참조값을 가지는 레퍼런스 변수
int[][] arr3 = new int[4][6];
int num =21;
//값 입력
for(int i=0;i<arr3.length;i++) {
for(int j=0;j<arr3[i].length;j++) {
arr3[i][j]= num++;
}
}
//값 출력
for(int i=0;i<arr3.length;i++) {
for(int j=0;j<arr3[i].length;j++) {
System.out.print(arr3[i][j]+"\t");
}
System.out.println();
}
}
}
배열의 길이를 구할 수 있는 속성> length
seat.length ->2차원 배열의 행 개수
seat[1].length -> 2차원 배열 1번째 행의 열 개수
[비정방형 배열]
비정방형 배열? 각행의 열의 개수가 다른 배열
[비정방형 배열의 생성]
int[][]seat = new int[5][];
seat[0] = new int[1];
seat[1] = new int[2];
seat[2] = new int[3];
seat[3] = new int[1];
seat[4] = new int[3];
-> 각 행마다 열이 다르기 때문에 원하는 열 사이즈를 따로 지정해 줘야 함
package 이차원배열;
public class ex04비정방형배열 {
public static void main(String[] args) {
//비정방형배열 생성
int[][] arr = new int[5][];
arr[0] = new int[3];
arr[1] = new int[2];
arr[2] = new int[5];
arr[3] = new int[1];
arr[4] = new int[6];
System.out.println(arr[0].length);
System.out.println(arr[2].length);
}
}
//확장for문 (for~each문) -> 배열,arraylist
//(배열의 0번 인덱스부터 실제값을 임시적으로 저장할 변수 선언 : 배열 레퍼런스변수이름)
for(String s:arrStr) {
System.out.println(s);
}
package 이차원배열;
public class Ex02 {
public static void main(String[] args) {
int[][] arr = new int[5][5];
int num = 1;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j--) {
arr[i][j] = num++;
}
}
num = 1;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
arr[i][arr.length - 1 - j] = num++;
}
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j >= arr[i].length; j++) {
System.out.println(arr[i][j] + "\t");
}
System.out.println();
}
int[][] arr2 = new int[5][5];
int num2 = 1;
for (int i = 0; i < arr.length; i++) {
if (i % 2 == 0) {// 행 인덱스가 짝수
for (int j = 0; j < arr2[i].length; j++) {
arr2[i][j] = num2;
}
} else {// 행 인덱스가 홀수
for (int j = 0; j < arr2[i].length; j++) {
arr2[i][arr2[i].length - 1 - j] = num2++;
}
}
}
for (int i = 0; i < arr2.length; i++) {
for (int j = 0; j < arr2[i].length; j++) {
System.out.println(arr2[i][j] + "\t");
}
System.out.println();
}
}
}
package 이차원배열;
public class ex04비정방형배열 {
public static void main(String[] args) {
//비정방형배열 생성
int[][] arr = new int[5][];
arr[0] = new int[3];
arr[1] = new int[2];
arr[2] = new int[5];
arr[3] = new int[1];
arr[4] = new int[6];
System.out.println(arr[0].length);
System.out.println(arr[2].length);
}
}
[자바 오후수업]- 메소드
public class Ex05 {
public static void main(String[] args) {
int num1 = 11;
int num2 = 5;
int result = close10(num1, num2);
System.out.println("10에 가까운 수 : "+ result);
}
public static int close10(int num1, int num2) {
//1.첫번째 방법
//10과의 거리 차를 기억할 수 있는 변수 선언
int a = 10-num1;
int b = 10-num2;
//거리의 차가 음수가 나오지 않도록 절대값 작업 진행
if(a<0) {
a*=-1;
}if(b<0) {
b*=-1;
}
//2. 두번째 방법
int a = Math.abs(10-num1);
int b = Math.abs(10-num2);
//10과의 거리가 어느수가 더 가까운지 판단하기!
if(a > b) {
return num2;
}else if(a<b) {
return num1;
}else {
return 0;
}
}
}
public class ex07 {
public static void main(String[] args) {
int[] array = {1,3,4,8,7,9,10};
arrayTostring(array);
}
public static void arrayTostring(int[] arr) {
for(int i =0 ;i<arr.length;i++) {
System.out.print(arr[i]+" ");
}
System.out.println(Arrays.toString(arr));
}
}
public class ex08 {
public static void main(String[] args) {
getDivisor(10);
getDivisor(16);
getDivisor(24);
}
public static void getDivisor(int num) {
System.out.print(num + "의 약수 : ");
//1~num 범위
for(int i =1; i <= num; i++) {
if(num % i == 0) {
//약수!
System.out.print(i + " ");
}
}
System.out.println();
}
}
public class ex09 {
public static void main(String[] args) {
int num1 = 10;
int num2 = 2;
boolean divisor = isDivisor(num1, num2);
System.out.println(divisor);
}
public static boolean isDivisor(int num1, int num2) {
if (num1 % num2 == 0) {
return true;
} else
return false;
}
}
메소드 오버로딩 [ methodoverloading]
메소드 오버로딩이란 메소드의 이름은 하나만 주고 매개변수를 다르게 함으로써 메소드를 여러개 만드는 기법
오버로딩 메소드의 구별은 매개변수의 개수 및 매개변수의 데이터 타입으로 구분함
package Aug_seventeenth_reviw;
public class ex08 {
public static void main(String[] args) {
//메소드 오버로딩 -> 메소드 중복정의
System.out.println(sum(2,3));
System.out.println(sum(2,3,4));
System.out.println(1);
System.out.println("문자"+"문자");
System.out.println(sum(1,2));
}
public static int sum(int num1, int num2) {
return num1 + num2;
}
public static int sum(int num1, int num2, int num3) {
return num1 + num2+ num3;
}
}
[메소드 오버로딩의 조건]
메소드 이름이 같아야함
매개변수의 개수 또는 타입이 달라야 함
매개변수는 같고 리턴타입이 다른 경우는 오버로딩이아님
[오버로딩의 장점]
메소드이름의 낭비방지
같은 메소드에 여러 종류의 매개변수를 받을 수 있음
ex) add(int num1 , int num2)
add(float num1, float num2)
[paradigm]
사람들의 견해나 사고를 근본적으로 규정하는 테두리
[Programming Paradigm]
프로그래밍을 할 때 가지는 체계,관점,틀
[procedural progamming]
: 절차적 프로그래밍
: c, fortran, cobol
-step by step(process)
- data and logic mixed
[object oriented programming = 객체지향프로그래밍]
java, c#, python
[객체지향 프로그래밍이란]
객체지향프로그래밍(Objext Oriented Programming : OOP)
: 여러 개의 독립된 단위, 즉, 객체들의 모임으로 파악하고자 한는 것 각각의 객체는 메시지를 주고 받고 데이터를 처리
: 컴퓨터가 수행하는 작업을 객체들간의 상호 작용으로 표현 객체들의 집합으로 프로그램 작성
class(클래스) - 설계도
object(객체)created - 설계도 통해 실제로 만들어지는것
[객체지향프로그래밍의 특징]
캡슐화,상속,추상화,다형성
[추상화(abstraction)]
- 객체에서 공통된 속성과 행위를 추출하는 기법
- 코드 상에서 구현(로직)부분을 제외한 오직 선언 부분만을 설계
- 상세한 정보를 무시하고 필요한 정보들만 간추려서 구성
[캡슐화]
- 관련된 필드(속성)와 메소드(기능)를 하나로 묶고, 실제 구현 내용을 외부로부터 감추는 기법(정보은닉)
- 만일의 상황(타인이 외부에서 조작)을 대배해서 특정 속성이나 메소드를 사용자가 조작할 수 없도록 숨겨 놓은 것.
- 외부에서는 공개된 메소드(기능)의 인터페이스를 통해 접근할 수 있다.
[상속(inheritance)]
- 이미 작성된 클래스(상위클래스)의 특성을 그대로 이어받아 새로운 클래스(하위클래스)를 생성하는 기법
- 기존 코드를 그대로 재사용하거나 재정의 ->재사용+확장
[다형성]
- 사전적 의미 "다양한 형태로 나타날 수 있는 능력'
- 같은 기능(메소드)를 호출하더라도 객체에 따라 다르게 동작하는 것
- 상위 클래스의 동작을 하위클래스에서 다시 정의하여 사용하는 것 또한 다형성으로 볼 수 있다.
->Overriding(오버라이딩)
[객체지향프로그래밍의 장점]
- 신뢰성 있는 소프트웨어를 쉽게 작성할 수 있다
- 코드를 재사용하기 쉽다
- 유지보수가 용이하다
- 직관적인 코드 분석이 가능하다
- 소프트웨어 생산성이 향상된다
[클래스(class)의 구조]
public class 클래스명{
자료형 필드명1;
자료형 필드명2;
.... ...
반환형 메소드1(){...}
반환형 메소드2(){...}
}
[객체(object)의 생성]
public class 클래스명{
public static void main(String[]args){
클래스 객체명 = new 클래스();
}
package Ex01;
public class Person {
//Peraon 객체를 만들기 위한 셀계를 진행 하는 설계도!
//설계도는 설계만 진행하므로 실행되는 과정은 가질 수 없다!
// -> main() x
//설계도 -> class
//class 구조!
// 1. 필드 = 속성, 데이터, 특징
int age;
String gender;
int height;
int weight;
// 2. 메소드 = 행위, 로직, 기능
public void move() {
System.out.println("뚜벅뚜벅 걷는다...");
}
public void eat() {
System.out.println("우걱우걱 먹는다!");
}
//사람이라면 어떤 특징과 어떤 행위를 가져야 할까?
//키, 몸무게, 다리, 이름, 생김새,/ 자기, 먹기, 움직임
}
package Ex01;
public class PersionMain {
public static void main(String[] args) {
// 설계도를 통해서 실체(=객체)가 만들어질 수 있는 공간!
// 객체 생성하기 -> new 키워드!
Person 홍길동 = new Person();
//객체 구체화 하기! -> 객체가 가질 데이터값 저장
홍길동.age = 27;
홍길동.gender="여";
홍길동.height = 165;
홍길동.weight= 50;
System.out.println("성별: "+홍길동.gender);
홍길동.move();
홍길동.eat();
}
}
'Full Stack 교육 회고록' 카테고리의 다른 글
8/22- 자료구조(ArratList),클래스와객체 (0) | 2022.08.22 |
---|---|
8/19 java- 클래스와 객체 (0) | 2022.08.19 |
8/17 [자료구조]-배열 [java] -매소드 (0) | 2022.08.17 |
8/16 [자료구조]-알고리즘/ 배열 [database]-뷰 생성 (0) | 2022.08.16 |
8/10 [JAVA]-While/do~while문 예제, for문 (0) | 2022.08.15 |