본문 바로가기
프로그래밍 언어 복습/JAVA 수업 내용

JAVA 수업내용 2주차 - (22.06.20 ~ 06.24)

by CHCH ITG 2022. 6. 20.

- 22.06.20(월요일)

알고리즘

유클리드 호제법(최대공약수)

가우스 소거법(방정식)

사디리꼴 법칙(정적분)

데이크스트라 알고리즘(최적 경로)

에라토스테네스의 체(소수)

2. 정렬

버블 정령 / 선택 정렬 / 삽입 정렬 / 셀 정령 / 병합 정렬 / 퀵 정렬

3.검색

선형 검색 / 이진 검색

4.문자열 패턴 매칭

단순 문자열 일치 / KMP알고리즘 / BM 알고리즘


반복문 복습

package 반복문;

public class notice {
    public static void main(String[] args){
         // 2중 for 문 for(초기식; 종료식; 증감식;)
        int i = 0;
        for(;;) {
            System.out.println(i);
            i++;
            if(i >= 100)break;
        }
        System.out.println();
    }
}
int i = 0;
for(;;) { // ;; 초기식,종료식,증감식이 들어간 뜻
    System.out.println(i);
package 반복문;

public class notice {
    public static void main(String[] args){
//         // 2중 for 문 for(초기식; 종료식; 증감식;)
        int i = 0;
while(true) {
            System.out.println(i);
            i++;
            if(i >= 100)break;
        }
    }
}

for(;;) = while(true) : 거의 동일하다 (사람마다 취향차이)

for(초기식; 최종식; 증감식;)


2중 for문으로 별찍기

package 반복문;

public class notice {
    public static void main(String[] args){

        for(int i = 0; i < 10; i++) {
            System.out.printf("|i=%d|", i);
            for(int j =0; j<10; j++) {
                System.out.print("* ");
            }
            System.out.println();

        }
    }
}

 

2중 for문 별찍기 (삼각형)

package 반복문;

public class notice {
    public static void main(String[] args){

        for(int i = 0; i < 10; i++) {
            System.out.printf("|i=%d|", i);
            for(int j =0; j<i+1; j++) {
                System.out.print("* ");
            }
            System.out.println();

        }
    }
}

2중 for문 역삼각형

package 반복문;

public class notice {
    public static void main(String[] args){

        for(int i = 5; i >= 0; i--) {
            System.out.printf("|i=%d|", i);
            for(int j =0; j<=i; j++) {
                System.out.print("* ");
            }
            System.out.println();

        }
    }
}

2중 for문 피라미드 삼각형


2중 for문 구구단 

package 반복문;

public class notice {
    public static void main(String[] args){

        for(int i = 2; i < 10; i++) {
            for(int j =1; j< 10; j++) {
                System.out.printf("%d X %d = %d\n",i,j, (i*j));
            }
            System.out.println(); // 줄 바꿈

        }
    }
}


2중 for문 및 if 조건문 응용

// 키보드로부터 정수 입력
// 1과 자기자신 이외의 수로는 소수가 아니다로 출력 / 나머지가 0이면 소수로 출력 / 정수 2도 또한 소수가 아니다로 출력

- My coding -

package 반복문;

import java.util.Scanner;

public class notice {
    public static void main(String[] args) {
        // 키보드로부터 정수 입력
        // 1과 자기자신 이외의 수로는 소수로 출력 / 나머지가 0이면 소수로 출력
        Scanner sc = new Scanner(System.in);
        System.out.print(" 정수를 입력하세요 : ");
        int num = sc.nextInt();
        int num1 = 2;
        for (int i = num; i%2 == 1;i++ ) {
            System.out.print(" 소수 입니다 ");
            }
            for (int j = num; j%2 == 0;j++ ) {
                if(num1 == j){
                    System.out.print("소수 입니다");
                }else
                System.out.print(" 소수가 아닙니다");
            }

        }
    }

- 선생님 방법 -

package 반복문;

import java.util.Scanner;

public class notice2 {
    public static void main(String[] args) {
        // 키보드로부터 정수 입력
        // 1과 자기자신 이외의 수로는 소수로 출력 / 나머지가 0이면 소수로 출력
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        boolean isPrime = true; // 소수여부 판단하는 타입
        for(int i =2; i<n; i++){ // 2부터 자신 미만까지 반복
            if(n%i==0) {
                System.out.println("소수 아닙니다");
                isPrime = false;
                break; // boolean을 사용해서 break; 가 포함되어야 한다.
            }
        }
        if (isPrime) System.out.println("소수 입니다. ");
    }
}

" boolean " // 참,거짓을 판별하기 위해 쓰임 / ture의 나온 값에 반대 개념으로 false로 생각하면 편함


배열

package 배열;

import java.util.Arrays;

public class practice220620 {
    public static void main(String[] args){
       // int[] arr1 = {1,2,3,4,5}; // 선언과 동시에 배열에 값을 대입하는 경우
        int[] score = new int[3]; // score라는 참조형 변수는 int형으로 만들어진 3개의 연속된 공간을 가리킨다

        score[0] = 99; // [0] = 대괄호 안에 해당되는 " 0 "은 index 값이라고 한다.
        score[1] = 88;
        score[2] = 77;
        for(int i = 0; i<score.length; i++) {
            System.out.print(score[i] + " ");
        }
        System.out.println();
        for(int i : score) { // 향상된 for문
            System.out.print(i+ " ");
        }
        System.out.println();
        String[] city = {"Seoul", " Busan", "Inchun", "Daegu"};
        for(String i : city){
            System.out.print(i+" ");
        }
        System.out.println();
        System.out.println(Arrays.toString(city));
    }
}

배열로 총점 및 평균 나타내기

package 배열;

import java.util.Arrays;

public class practice220620 {
    public static void main(String[] args) {
    int[] score = {89,99,88,77};
    int sum = 0;
    for(int val : score) sum += val; // 요소의 값을 더해서 sum에 누적시킴
        System.out.println("총점은 : "+sum);
    System.out.printf("평균 : %.2f\n", (double)sum/score.length);

    }
}


2차원 배열

package 배열;

import java.util.Arrays;

public class practice220620 {
    public static void main(String[] args) {
    int[][] arr = {
            {10,20,30},
            {40,50,60}
    };
    for(int i=0; i<arr.length; i++) { // arr.length = 2 [(10,40) /(20,50) / (30,60)]
        for(int j=0; j< arr[i].length; j++) { // arr[i].length = 3 
            System.out.print(arr[i][j] + " ");
        }
        System.out.println();

    }
        System.out.println(Arrays.toString(arr[0]));
        System.out.println(Arrays.toString(arr[1]));
        for(int[]i :arr) { // 향상된 for문
            for(int j :i) {
                System.out.print(j+ " ");
            }
            System.out.println();
        }
    }

배열 정렬

package 정렬;
// 버블 정렬 연습
// 순차 정렬 연습
public class practice220620 {
    public static void main(String[] avgs){
       int[] arr = {9,4,3,10,5,8,7,6,2,1};
       int tmp = 0; // 임시 저장소
        for(int i=0; i<arr.length;i++){
            for(int j =i; j<arr.length; j++){
                if(arr[i] > arr[j]) {
                    tmp = arr[j];
                    arr[j] = arr[i];
                    arr[i] = tmp;
                }
            }
        }
        for(int i : arr)System.out.print(i+ " ");
    }
}


2차원 배열 후 순차배열 코드

package 배열;

import java.util.Arrays;

public class practice220620 {
    public static void main(String[] args) {
        double[] avr = {0, 0, 0, 0, 0, 0}; // 각 학생의 평균을 구해서 저장
        int[][] score = {
                {1, 30, 89, 45, 0}, // 학번, 국어, 영어, 수학, 총점(//총점을 모르기 때문에 0점을 넣는다)
                {2, 80, 88, 98, 0},
                {3, 100, 89, 97, 0},
                {4, 56, 78, 45, 0},
                {5, 98, 56, 78, 0},
                {6, 34, 45, 67, 0}
        };
        for (int i = 0; i < score.length; i++) {
            for (int j = 1; j < 4; j++) { //j<4 총점을 제외한 모든 점수를 본다
                score[i][4] += score[i][j]; // score[i][4] = score[i][4]+score[i][j]
            }
            avr[i] = (double) score[i][4] / 3; //3과목에 대한 평균
            System.out.printf("%d %d %.2f\n", score[i][0], score[i][4], avr[i]);
        }
        int tmpNum = 0; // 학번 정렬
        int tmpTotal = 0; // 총점 정렬
        double tmpAvr = 0; // 평균 정렬
        System.out.println("\t번호\t\t총점\t\t평균");
        System.out.println("--------------------------");

        for(int i = 0; i< score.length; i++) {
            for(int j=i; j< score.length; j++) {
                if(score[i][4] < score[j][4]){
                    tmpTotal = score[i][4];
                    score[i][4] = score[j][4];
                    score[j][4] = tmpTotal;

                    tmpNum = score[i][0];
                    score[i][0] = score[j][0];
                    score[j][0] = tmpNum;

                    tmpAvr = avr[i];
                    avr[i] = avr[j];
                    avr[j] = tmpAvr;
                }
            }
            System.out.printf("\t%d\t\t%d\t\t%.2f\n", score[i][0],score[i][4],avr[i]);
        }


String 문자열

// equals() : 문자열을 비교하는 내장 메소드
// indexOf() : 문자열에서 특정 문자가 시작되는 인덱스를 리턴
// contains() :문자열에서 특정 문자열이 포함되어 있는지의 여부를 리턴
// charAt() : 문자열에서 특정 위치의 문자를 리턴
// replaceAll() : 문자열 중 특정 문자열을 다른 문자열로 바꾸고자 할 때 사용
// subString() : 문자열 중 특정 부분을 뽑아낼 경우에 사용한다.
// split() : 문자열을 특정 구분자로 분리하는 메소드이다.

String 문자열 문제

//2개의 문자열을 입력받음 (s,k)
// s문자열의 뒤부분에 n개 문자를 k문자열에 끼워 넣음
// 정수를 입력받음
// s: Seoul / k : Korea
// n: 2
// result : ulkorea
package String;

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);
        System.out.print("s 문자열 입력 : ");
        String s = sc.next();
        System.out.print(" k 문자열 입력 : ");
        String k = sc.next();
        System.out.print("정수 입력 : ");
        int n = sc.nextInt();
        int pos = s.length()-n;
        String sub = s.substring(pos);
        System.out.println(sub+k);



    }

}

복습 문제

for 별찍기 예제 및 다른 예제  / 2차원 배열 문제 / String 문자열 문제 (각 3문제씩)


- 22.06.21(화요일)

복습

toCharArray()

문자열을 문자 배열로 반환 합니다.

문자열 문제

//영어 소문자와 대문자로 이루어진 단어를 입력 받은 후
// 대문자는 소문자로..
// 소문자는 대문자로 변경하는 프로그램 작성
// 입력 : AbCdEf
// 출력 : aBcDeF
package String;

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);
        System.out.print(" 알파벳을 무작위로 작성하세요 : ");
        String input = sc.nextLine();
        char[]word = input.toCharArray(); // 문자열을 문자 배열로 변환
        for(int i=0; i<word.length; i++){
            // 대문자 'A'가 'a' 작으면
            if(word[i] < 'a') word[i] = (char)(word[i] +('a' - 'A'));
            else word[i] = (char)(word[i]-('a'-'A'));
        }
        System.out.println(word);


    }

}

문자열 예제

// 10개의 배열을 생성하고 중복된 값이 존재하도록 생성
// 1,2,3,4,5 / 1,2,3,4,5
// 입력 : 배열내에 전재하는 임의의 숫자 입력
// 임의의 숫자가 2번재 나타나는 위치를 확인하는 프로그램
// 만약 찾고자 하는 숫자가 없는 경우 -1로 출력
package String;

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        int[] arr = {1, 2, 3, 4, 5, 1, 2, 3, 4, 5};
        int cnt = 0;
        Scanner sc = new Scanner(System.in);
        System.out.print("입력 : ");
        int n = sc.nextInt();
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == n) {
                cnt++;
                if (cnt == 2) {
                    System.out.println(i + 1);
                    break;
                }
                }
            }
            if (cnt == 0) System.out.println("-1");
        }
    }

 

문자열 예제

// 사용자에 의해 2개의 문자열을 입력 받음
// 처음부터 2개의 문자열을 비교해 공통의 글자가 몇 개인지 확인합니다.
// 공통 부분 문자열과 길이를 출력 합니다.
// 공통된 문자열이 없으면 " No CS"로 입력합니다.
package String;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        int cnt = 0;
        Scanner sc = new Scanner(System.in);
        System.out.print("첫번째 문자열 : ");
        String a = sc.next();
        System.out.print("두번째 문자열 : ");
        String b = sc.next();
        for (int i = 0; i < a.length(); i++) {
            if (a.charAt(i) == b.charAt(i)) {
                System.out.print(a.charAt(i));
                cnt++;
            } else break;
        }
        System.out.println();
        if(cnt !=0) System.out.println(cnt);
        else System.out.println("No CS");
    }
}

클래스

package 클래스;

public class Main {
    public static void main(String[] args) {
        Car santafe = new Car("santafe","Gary",2020,250,220);

        Car sorento = new Car("sorento","Black",2020,250,220);
        santafe.viewCar();
        sorento.viewCar();
    }
}
class Car {
    String name;
    String color;
    int productYear;
    int horsePower;
    int maxSpeed;

            Car(String name, String color, int year, int power, int speed) { //생성자
                this.name = name; // this는 생략도 가능
                this.color = color;
                this.horsePower = power;
                this.productYear = year;
                this.maxSpeed = speed;

                }
    void setName(String name) {
                this.name = name;
            }
    void setColor(String color) {
        this.color = color;
    }
    void viewCar() {
            System.out.println("이름 : " + name);
        System.out.println("색상 : " + color);
        System.out.println("출고연도 : " + productYear);
        System.out.println("마력 : " + horsePower);
        System.out.println("최고속도 : " + maxSpeed);

            }
}

배열을 활용한 예제

 

package practice;

import java.util.Scanner;

public class practice220621version2 {
    public static void main(String[] args) {
        //5명의 성적을 입력 받을 배열 생성
        int[] score = new int[5];
        //입력을 받기 위한 스캐너 객체 생성
        int total = 0;
        Scanner scanner = new Scanner(System.in);
        //정수 입력 받기
        System.out.print("5명 점수 입력");
        for(int i=0; i < score.length; i++){
            score[i] = scanner.nextInt(); // 5명에게 점수를 입력하는 수식
        if(score[i] <40) score[i] = 40;
        total +=score[i];
        }
        System.out.println(total/5);
        }
    }

메소드 문제

package 메소드;

import java.util.Scanner;
// 3자리 정수 입력
// 100의 자리,10의 자리, 1의 자리 값을 나누어담기
// 가장 큰 수 찾기
// 입력 : 356
// a : 3, b : 5, c:6
// a와 b와 c 중에서 가장 큰 수 출력
public class Main {
    static int a, b, c;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("정수를 입력 : ");
        int num = sc.nextInt();
        numSplit(num);
        System.out.println(compareNum());
    }

    static void numSplit(int number) {
        a = number / 100;
        b = (number % 100) / 10;
        c = number % 10;

    }

    static int compareNum() {
        if (a > b) {
            if (a > c) return a;
            else return c;
        } else {
            if (b > c) return b;
            else return c;
        }

    }
}

2022.06.22 수요일

메소드 문제 소수 구하기

package 메소드;

import java.util.Scanner;
// 소수의 합 구하기 : 12
// 2+3+5+7+11 = 28
public class Main {
    public static void main(String[] args) {
        System.out.print("정수를 입력 : ");
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(); // Scanner 객체로 부터 정수 한개를 입력 받음
        if(prime(n)) System.out.println("소수 입니다."); // 메소드의 호출 결과가 true로 반환
        else System.out.println("소수가 아닙니다."); // 메소드의 호출 결과가 false로 변환

    }

    //prime 메소드의 호출 결과를 boolean type으로 반환(ture/false)
    static boolean prime(int n) { 
        for(int i=2; i<n; i++) { // 1과 자기 자신을 제외하고 나누어 지는지 확인
            if(n%i==0)return false; // 나누어 지는 경우 이므로 소수가 아님
        }
        return true; // 한번도 나누어 지지 않았기 때문에 소수임
    }


    }

메소드 문제 소수 구한 뒤 소수의 총 값 구하기

package 메소드;

import java.util.Scanner;
// 소수의 합 구하기 : 12
// 2+3+5+7+11 = 28
public class Main {
    public static void main(String[] args) {
        int sum = 0;
        System.out.print("정수를 입력 : ");
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(); // Scanner 객체로 부터 정수 한개를 입력 받음
       for(int i =2; i < n;i++) sum += prime(i);
       System.out.println(sum);
    }

    //prime 메소드의 호출 결과를 boolean type으로 반환(ture/false)
    static int prime(int n) {
    boolean isPrime = true;
    for(int i =2; i<n; i++) { //1과 자기 자신을 제외하고 나누어 지는지 확인
        if (n%i ==0) isPrime = false; // 나누어지는 경우 소수가 아님
        }
        if(isPrime) return n;
       else return 0; // 한번도 나누어 지지 않았기 때문에 소수임
    }


    }

필드 영화티켓 예매

//메뉴는 예매하기와 종료하기 2개 입니다.
//극장의 좌석은 10개입니다
//먼저 좌석을 보여주고 예매할 좌석을 선택 하도록 합니다.
//판매된 좌석은 선택 할 수 없습니다.
// 종료하기 선택시 판매 된 총 금액을 계산 합니다. (좌석 당 12,000원 입니다.)

들어가기전 객체 만들기

package 영화표예매;

import java.util.Scanner;

public class MovieTicket {
    int[] seat = new int[10];
    // 좌석 보여 주기
    void viewSeat() { // 좌석 나열 및 좌석 선택시 체크 표시
        for(int i=0; i<seat.length; i++) {
            if(seat[i] == 0) System.out.print("[ ]");
            else System.out.print("[V]");
        }
        System.out.println();
    }
    void selectSeat() { // 좌석 표시
        viewSeat();
        Scanner sc = new Scanner(System.in);
        System.out.print( "좌석 번호를 선택 하세요 : ");
        int seatPos = sc.nextInt();
        if(seat[seatPos-1]==0) {
            seat[seatPos-1] = 1;
            viewSeat();
        } else System.out.println("이미 예약된 자석입니다.");
    }
    int totalAmount() { // 티켓 계산값
        int cnt = 0;
        for (int val : seat) {
            if(val == 1) cnt++;
        }
        return cnt*12000;
    }
}

선언 후 가져오기

package 영화표예매;

import java.util.Scanner;

//메뉴는 예매하기와 종료하기 2개 입니다.
//극장의 좌석은 10개입니다
//먼저 좌석을 보여주고 예매할 좌석을 선택 하도록 합니다.
//판매된 좌석은 선택 할 수 없습니다.
// 종료하기 선택시 판매 된 총 금액을 계산 합니다. (좌석 당 12,000원 입니다.)
public class Main {
    public static void main(String[] args) {
        MovieTicket ticket = new MovieTicket();
        Scanner sc = new Scanner(System.in);
        while(true) {
            System.out.println("[1]예매하기");
            System.out.println("[2]종료하기");
            int selMenu = sc.nextInt();
            if(selMenu == 1) ticket.selectSeat();
            else{
                System.out.println(ticket.totalAmount());
                break;
            }
        }
    }

}

알고리즘 문제

// 문자열을 입력 받음 : abcdef
// 결과 : fedcba
// 문자열 길이는 : 20개 이하

문자열을 그대로 입력 받을 때 

package 알고리즘;

import java.util.Scanner;

public class code {
    public static void main(String[] args) {
   Scanner sc = new Scanner(System.in);
   System.out.println(" 문자열 입력 : ");
   String input = sc.next();
   char[] chArr = input.toCharArray();

   for(int i=0; i< chArr.length; i++) {
       System.out.print(chArr[i]+ " ");



   }



    }
}

입력한 문자열을 거꾸로 받을 때 (toCharArray로 사용한 방식)

package 알고리즘;

import java.util.Scanner;

public class code {
    public static void main(String[] args) {
   Scanner sc = new Scanner(System.in);
   System.out.println(" 문자열 입력 : ");
   String input = sc.next();
   char[] chArr = input.toCharArray();

   for(int i=chArr.length-1; i>=0; i--) {
       System.out.print(chArr[i]);
   }
   System.out.println();

   }

    }

for문을 활용한 방식

package 알고리즘;

import java.util.Scanner;

public class code {
    public static void main(String[] args) {
   Scanner sc = new Scanner(System.in);
   System.out.print(" 문자열 입력 : ");
   String input = sc.next();
    for(int i = input.length()-1; i>=0; i--){
        System.out.print(input.charAt(i));
    }
   System.out.println();

   }

    }

아이패드 주문

int screen; // 11인치(1) 와 12.9인치(2)
int color; // 컬러 : 스페이스그레이(1), 실버(2)
int memory; // 용량 : 128GB(1), 256GB(2), 512GB(3), 1TB(4)
int network; // 네트워크 : wi-fi(1), Wifi+Cellular(2)
String name; // 각인서비스로 이름
String nowDate;
String serial; // 제품의 고유 넘버
package 아이패드주문;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class IpadSpec {
    int screen; // 11인치(1) 와 12.9인치(2)
    int color; // 컬러 : 스페이스그레이(1), 실버(2)
    int memory; // 용량 : 128GB(1), 256GB(2), 512GB(3), 1TB(4)
    int network; // 네트워크 : wi-fi(1), Wifi+Cellular(2)
    String name; // 각인서비스로 이름
    String nowDate;
    String serial; // 제품의 고유 넘버
    static int cnt; // 몇대 제작 되었는지 확인
    Scanner sc = new Scanner(System.in);

    IpadSpec(String name) {
        this.name = name;
        Date now = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
        nowDate = sdf.format(now);
        cnt++;
        nowDate = nowDate+cnt;

    }

    //iPad Pro 구입 선택 메뉴 만들기
    boolean choicePad() {
        String isQuit;
        System.out.println("===== iPad 구입하기 =====");
        System.out.print("계속 진행하시려면 yes를 입력하세요. 종료는 quit ");
        isQuit = sc.nextLine();
        if (isQuit.equals("yes")) return true;
        else return false;
    }

    // 디스플레이 선택 가능
    void setScreen() {
        while (true) {
            System.out.print("디스플레이 선택 [1] 11인치,[2] 12.9인치 ");
            screen = sc.nextInt();
            if (screen == 1 || screen == 2) break;
            System.out.println("디스플레이를 다시 선택 하세요.");
        }
    }

    // 컬러 선택 가능()
    void setColor() {
        while (true) {
            System.out.print("컬러 선택 [1] 스페이스 그레이,[2] 실버 ");
            color = sc.nextInt();
            if (color == 1 || color == 2) break;
            System.out.println("컬러를 다시 선택하세요.");
        }
    }

    void setMemory() {
        while (true) {
            System.out.print("용량 선택 [1] 128GB,[2] 256GB,[3] 512GB,[4] 1TB ");
            memory = sc.nextInt();
            if (memory >0 && memory <5) break;
            System.out.println("[용량을 다시 선택하세요.");

        }
    }

    void setNetwork() {
        while (true) {
            System.out.print("네트워크 선택 [1] Wi-fi,[2] Wi-fi+Cellular ");
            network = sc.nextInt();
            if (network == 1 || network == 2) break;
            System.out.println("[네트워크를 다시 선택하세요.");
        }
    }
    //각인 서비스
    void setName() {
        while (true) {
            String service;
            System.out.print("각인 서브시를 신청하시겠습니까?(yes/no) : ");
            service = sc.next();
            if(service.equals("yes")) {
                Scanner sc = new Scanner(System.in);
                System.out.print("이름을 입력 하세요 : ");
                name = sc.nextLine();
            }else{
                name = "iPad Pro";
            }
            break;
        }
    }
    // 시리얼 넘버
    void setSerial() {
        String screenStr = (screen == 1) ? "11" : "13";
        String [] memStr = {"", "128", "256", "512","1024"};
        String netStr = (network == 1) ? "W" : "C";
        serial = "iPad" + screenStr+memStr[memory]+netStr+nowDate;
        System.out.println(serial);
    }
    //iPad 출고 하기
    void makeiPad() {
        final String[] screenType = {"","11인치","12.9인치"};
        final String[] colorType = {"","스페이스 그레이","실버"};
        final String[] memType = {"","128GB","256GB","512GB","1TB"};
        final String[] netType = {"","Wi-fi","Wi-fi+Cellular"};
        System.out.println(" iPad가 출고 되었습니다");
        System.out.println("-----------------------------------");
        System.out.println("화면 크기 : " + screenType[screen]);
        System.out.println("제품 색상 : " + colorType[color]);
        System.out.println("제품 용량 : " + memType[memory]);
        System.out.println("네트워크 : " + netType[network]);
        System.out.println("이름 : " + name);
        System.out.println("일련 번호 : "+serial);
        System.out.println("-----------------------------------");
    }
}
package 아이패드주문;

public class Main {
    public static void main(String[] args) {
        while (true) { //수량 증가
            IpadSpec ipad = new IpadSpec("Ipad Pro");
            {
                if (ipad.choicePad()) System.out.println("주문을 계속 진행 합니다.");
                else {
                    System.out.println("주문을 종료 합니다.");
                    break;
                }
                ipad.setScreen();
                ipad.setColor();
                ipad.setMemory();
                ipad.setNetwork();
                ipad.setName();
                ipad.setSerial();
                ipad.makeiPad();

            }
        }
    }
}

int -> private로 바꾸면 접근제한이 걸려서, Main에서 잘못된 입력을 하면 실행자체가 안되게 막는다.


22.06.23 수업

메소드 예제 복습 링크 : 클릭

 

[Java 11] 자바 - 메소드(Method)

자바의 메소드(Method)에 대해 공부해봅시다!

hyuntaekhong.github.io

오버 로딩/ 오버 라이딩 예제

복습 예제

 

오버로딩과 오버라이딩 차이와 예제

자바에서 다형성을 지원하는 방법으로 메서드 오버로딩과 오버라이딩이 있습니다. 오버로딩(Overloading) : 같은 이름의 메서드 여러개를 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술

private.tistory.com

this와 this()

휴대폰 요금제 알고리즘 문제

package 알고리즘;

import java.util.Scanner;

// 영식 요금제 : 30초 마다 10원(ex/ 45초면 20원)
// 민식 요금제 : 50초 마다 15원
// 첫번째 줄 입력 : 통화 횟수 (20회)
// 두번째 줄 입력 : 통화 횟수에 대한 통화 시간
// 둘 중 싼 요금제 출력 : Y 45
// 총 요금이 동일하면 : Y M 60
public class Arg {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int ym = 0; // 영식이 요금제
        int mm = 0; // 민식이 요금제
        int sec = 0; // 분당 요금제
        System.out.print("통화 횟수를 입력하세요 : ");
        int n = sc.nextInt(); // 통화 횟수
        System.out.print("통화 시간을 입력하세요 : ");
        for(int i = 0; i < n; i++) {
            sec = sc.nextInt(); // 초단위에 정수를 넣어야함
            ym += ((sec/30)+1) *10;
            mm += ((sec/50)+1) *15;
            }
            if(ym < mm) {
                System.out.println("Y" + ym);
            }else if (mm < ym) {
                System.out.println("M" +mm);
        }else {
                System.out.println("Y M"+ym);
            }
            }
            }

 

선생님

package 알고리즘;

import java.util.Scanner;

// 영식 요금제 : 30초 마다 10원(ex/ 45초면 20원)
// 민식 요금제 : 50초 마다 15원
// 첫번째 줄 입력 : 통화 횟수 (20회)
// 두번째 줄 입력 : 통화 횟수에 대한 통화 시간
// 둘 중 싼 요금제 출력 : Y 45
// 총 요금이 동일하면 : Y M 60
public class Tea {

    public static void main(String[] args) {
        int[] call = new int[20];
        int mPay = 0, yPay = 0;
        Scanner sc = new Scanner(System.in);
        System.out.print("통화횟수 : ");
        int n = sc.nextInt();
        for(int i = 0; i <n; i++) {
            call[i] = sc.nextInt(); // 각의 통화 시간
        }
        for(int i =0; i<n; i++) {
            yPay += (call[i]/30) * 10 +10;
            mPay += (call[i]/60) * 15 +15;
        }
        if(yPay > mPay) System.out.println("M"+mPay);
        else if(yPay < mPay) System.out.println("Y"+yPay);
        else System.out.println("Y M"+yPay);
    }
}

댓글0