202401to07
  • 2024.01.05.금.day6
    2024년 01월 05일 10시 53분 15초에 업로드 된 글입니다.
    작성자: 202401to07

    첫 지각

     

    MyClass3.java~

     

    CarClass.java / B04CartMain.java :장바구니 만들고 출력

    package object.day6;
    
    public class CartClass {
    
        private String userid;
        private String[] products;
        private int[] prices;
        private int total_Money;
    
        public String getUserid(){
            return userid;
        }
        public String[] getProductName(){
            return products;
        }
        public int[] getPrices(){
            return prices;
        }
        public int getTotalMoney(){
            return total_Money;
        }
    
        public void setUserid(String id){
            this.userid = id;
        }
        public void setProductName(String[] name){
            this.products = name;
        }
        
        public void setPrices(int[] prices){
            this.prices = prices;
        }
        /*public void setTotalMoney(int totalmoney){
            this.total_Money= totalmoney;
       
        }*/
    
    
        //추가적인 인스턴스 메소드 : 해결방법
        // 상품 총 가격 합계 메소드 
        public int total_Money(int[] select){       // total money는 int[]가 아니고 int이다.
            int sum = 0;
            for(int i=0; i<select.length;i++){ 
                int temp = select[i];   //select가  -1이면 선택 종료 였잖아 근데 크기를 5로 설정했잖아 
                if(temp == -1) break;
                sum += prices[temp];
            }
            return sum;
        }
        
    }

     

    package object.day6;
    
    import java.util.Arrays;
    import java.util.Scanner;
    
    public class B04CartMain {
        
        public static void main(String[] args) {
             CartClass momo =  new CartClass();
    
            //String, String[], int[] 필드는 초기값이 null
    
            String[] products = {"새우깡","칠성사이다","빅토리아","제주감귤","나주베","호빵","이클립스"};
            int[] prices = {3000,2500,9900,12000,9800,6000,1500};
    
            momo.setUserid("모모");
            momo.setProductName(products);
            momo.setPrices(prices);
    
    
    
    
            Scanner sc =  new Scanner(System.in);
    
            System.out.println("모모의 장바구니입니다");
            System.out.println(String.format("%s\t %s\t %s\t","번호","상품명","가격" ));
    
            for(int i = 0 ; i < momo.getProductName().length ; i++){        //gerProductName이야 조심해 
                System.out.println(String.format("%d\t %s\t %d\t",i, products[i],prices[i]));
            }
    
            System.out.println("구매할 상품을 선택하시오. 선택종료는 -1입니다.");
            // select는 저장공간 자체를 말한다 
            // k는 (그 저장공간의 각각 몇번방으로 가라)저장공간의 인덱스이다 
            // sel은 입력받은 값이다 
            int sel = 0;                //입력받은 값
            int[] select = new int[5]; //저장공간의 최대 크기(갯수)는 5개
            int k = 0;                 //저장공간의 인덱스
            while (sel != -1 && k < select.length) { //길이는 5 인덱스는 01234 이므로 
                System.out.println("상품 번호 입력");
                sel = sc.nextInt();
                //sel의 선택범위는 productName 인덱스범위 안에서 선택하는 것이다 
                if(sel<-1 || sel > products.length-1){     //장바구니 이외의 숫자를 선택하면 잘못됏다고 알려줘야됨 //-1하는 이유는 인덱스가 0부터 시작이니깐 
                    System.out.println("없는 상품입니다");
                    continue; //아래있는 명령어 실행하지 않고 다시 반복문 시작으로 돌아간다
                } 
                select[k++]=sel;        //대입후에 ++ 해야됨 
            }
    
            if(k==select.length)
                System.out.println("장바구니를 모두 채우셨습니다");
    
            System.out.println("선택하신 번호는 : " + Arrays.toString(select));
            System.out.println("모모님이 선택하신 상품 합계 : " + momo.total_Money(select));
    
            momo.total_Money(select);  //setter메소드가 여기서는 필요없습니다 
                                                      //total_Money 메소드가 대신 값을 계산하여 저장할것입니다 . 
            
        }
        //필요에 따라서는 기존의 setter메소드는 사요하지 않고 추가적인 비지니스로직을 구현하는 메소드를 만듭니다.-> total money  
        
        
        
    }

    이 부분 어려웠음 이해는 함 

    이것도 어려워 

     

    MyClass5

     

    강사님이 보내주신건데 뭘 말하는건지 모르겠지만 일단 저장해두기

     

    this. 를 쓴 이유:

    this. 는 인스턴스 변수와 메서드 변수의 이름이 같을 때 구분하기 위해 사용하는 것이다.

     

    %s 문자열 ,%d 정수(10진수) ,%f 부동소수점, %c 문자, %b 논리값, 

    %x 정수(16진수), %o정수(8진수), %e 부동소수점(지수형식), %g 부동소수점(일반 형식)

     

     

    package object.day6;
    
    import java.lang.reflect.Array;
    import java.util.Arrays;
    
    public class Product {
        // private으로 선언을 먼저 한다 
        private String productName;
        private int price;
        private String company;
        private String[] etc;
    
        // 기본 생성자는 생략해도 되고 필요한 경우 써도 된다.
        public Product() {
        }
        //커스텀 생성자 만들기 
        public Product(String productName,int price, String company, String[] etc) {
            this.productName = productName;
            this.price = price;
            this.company = company;
            this.etc = etc;
        }
        
        
        //getter
        public String getProductName() {
            return productName;
        }
        
        public int getPrice() {
            return price;
        }
        
        public String getCompany() {
            return company;
        }
        
        public String[] getEtc() {
            return etc;
        }
    
        public String getData(){
            return String.format("%15s\t %10d\t %-10s\t %-20s" , productName, price, company, Arrays.toString(etc));
            // %s 문자열 ,%d 정수(10진수) ,%f 부동소수점, %c 문자, %b 논리값, %x 정수(16진수), %o정수(8진수), %e 부동소수점(지수형식), %g 부동소수점(일반 형식)
            
        }
    
    
    
    
    }

     

    package object.day6;
    
    public class B06ProductMain {
        public static void main(String[] args) {
            
            //product 객체를 4개 만들어보겠습니다 
            //이거 Product.java에서 만든 커스텀 생성자 이용해서 객체 만드는 거임 
            Product snack = new Product("새우깡", 1200, "농심", new String[3]);
            Product drink = new Product("칠성사이다", 2200, "롯데", new String[3]);
            Product fruit = new Product("부사", 12000, "우리농원", new String[3]);
            Product icecream = new Product("투게더", 7000, "빙그레", new String[3]);
    
            System.out.println(snack.getData());
            System.out.println(drink.getData());
            System.out.println(fruit.getData());
            System.out.println(icecream.getData());
    
            //퀴즈 snack의 etc 필드 배열요소 0번에 "10개묶음"문자열을 저장하시오 
    
            String[] temp = snack.getEtc(); //가져온값 어떻게 저장? = temp라는 바구니 만들고 거기에 저장해야지
            temp[0] = "10개묶음";            //0번에 "10개묶음"문자열을 저장
            System.out.println(snack.getData());
            //snack.setPrice(1000); -> set메소드 없어서 오류  
            //snack.price = 1000;  -> private이라  오류 
    
    
            // 장바구니를 만들어보겠습니다 -> 객체 만들기 
            Product[] mycarts = new Product[5]; // 장바구니 크기는 5개 
            mycarts[0] = drink;
            mycarts[1] = icecream;
            //mycarts[2] = drink;
            mycarts[3] = fruit;
            mycarts[4] = snack;
    
            //배열이므로 반복문으로 출력할수있습니다 -getDAta()메소드 사용
            for(int i=0; i<mycarts.length;i++){
                if(mycarts[i] != null)     // 장바구니[2] 2번방은 비어있어서 null이 나와욤
                    System.out.println(mycarts[i].getData()); //mycarts[i]가 NULL일때는  메모리에 할당이 안된 상태 -메소드를 쓸수없는 상태 
            }
    
        }
    
    }

     

    오늘 배운것 정리 : 

     

     

     

     

    '보안' 카테고리의 다른 글

    2024.01.09.화.day8  (0) 2024.01.09
    2024.01.08.월.day7  (0) 2024.01.08
    2024.01.04.목.day5  (0) 2024.01.04
    2024.01.03.화.day4  (0) 2024.01.03
    2024.01.02.월.day3  (0) 2024.01.02
    댓글