개인 간단 실습 해보기 !

박성현·2024년 3월 26일

java

목록 보기
43/51

제네릭타입을 이용해 사용자(손님) 데이터를 입력하고 get을 통해 값을 받아와 저장할 수 있는 시스템을 구현해보자 !!

MemberNoGeneric.java

package genericpkg;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class MemberNoGeneric {
    
    public static void main(String[] args) {
    	// 제네릭 타입을 이용해 데이터타입을 명시적으로 지정해줌 <Member>
        // 이렇게 써주면 list는 Member 객체들을 담을수 있는 동적 리스트가 됨
        List<Member> list = new ArrayList<Member>();

        Scanner sc = new Scanner(System.in);
        for(int i=0; i<3; i++) {

            System.out.println((i+1)+"번째 손님 이름입력 > ");
            String name = sc.next();

            System.out.println((i+1)+"번째 손님 ID 입력 > ");
            String id = sc.next();

            System.out.println((i+1)+"번째 손님 PW 입력 > ");
            String pw = sc.next();

            System.out.println((i+1)+"번째 손님 나이 입력 > ");
            int age = sc.nextInt();


            // 생성자 선언하여 초기화함, 즉 Member 클래스가 필요함 
            Member member = new Member();
            // 입력받은 값들을 set을 통해 값을 세팅해줄 수 있음 
            member.setName(name);
            member.setId(id);
            member.setPassword(pw);
            member.setAge(age);
            
            // member에서 set을 통해 입력받은 값들을 list에 담아줌(add)
            list.add(member);
        }
        
        // memberPrint 메서드 호출하여 출력
        memberPrint(list);
        
        // 스캐너 닫기
        sc.close();
    }
    
    // memberPrint 메서드 정의 
    // 마찬가지로 제네릭 타입이고, List가 Member객체를 담고 있음
    public static void memberPrint(List<Member> list) {
        for (Member m : list) {
        	// add하여 list에 넣어줬던 값들을 가져와서 출력해줌
            String name = m.getName();
            String id = m.getId();
            String pw = m.getPassword();
            int age = m.getAge();
            System.out.printf("name = %s, id = %s, pw = %s, age = %s \n", name, id, pw, age);
        }
    }
}

생성자가 있었기때문에 Member 클래스를 하나 생성해야한다.

Member.java

  • private로 각각의 값들의 타입들을 선언해줌
  • setter, getter를 통해 세팅하고 값을 보내줄 수 있음
package genericpkg;

public class Member {
	private String name;
	private	String id;
	private	String password;
	private	int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

결과값 :


추가적으로 응용 실습!!

  • 블로그의 데이터들을 한번에 볼 수 있도록 할 수 있는 작업을 해보자 ! !

BlogNoGeneric.java

package genericpkg;
import java.util.ArrayList;
import java.util.Scanner;

public class BlogNoGeneric {
    public static void main(String[] args) {
        // Blog 객체를 저장할 배열 생성
        Blog[] blogsArray = new Blog[3];

        Scanner sc = new Scanner(System.in);
        // ArrayList에 Blog 객체 저장
        ArrayList<Blog> blogsArrayList = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            System.out.println("블로그 정보 입력");
            System.out.print("제목 입력 > ");
            String title = sc.nextLine();
            System.out.print("위치 입력 > ");
            String location = sc.nextLine();
            System.out.print("공감 수 입력 > ");
            int likes = sc.nextInt();
            System.out.print("댓글 수 입력 > ");
            int comments = sc.nextInt();
            sc.nextLine(); // 버퍼 비우기

            // 입력 받은 정보로 Blog 객체 생성 후 ArrayList에 추가
            blogsArrayList.add(new Blog(title, location, likes, comments));
        }

       
        // ArrayList 출력
        System.out.println("\nArrayList 출력:");
        for (Blog blog : blogsArrayList) {
            System.out.printf("%s,[%s], 공감 %d, 댓글 %d\n", blog.getTitle(), blog.getLocation(), blog.getLikes(), blog.getComments());
        }

        // 스캐너 닫기
        sc.close();
    }
}

Blog.java

  • 마찬가지로 getter, setter로 세팅해주고 보낼 수 있다.
package genericpkg;

public class Blog {
    private String title;
    private String location;
    private int likes;
    private int comments;

    public Blog(String title, String location, int likes, int comments) {
        this.title = title;
        this.location = location;
        this.likes = likes;
        this.comments = comments;
    }

    public String getTitle() {
        return title;
    }

    public String getLocation() {
        return location;
    }

    public int getLikes() {
        return likes;
    }

    public int getComments() {
        return comments;
    }
}

결과값 :

profile
개발기록장

0개의 댓글