TIL 0307

먼지·2024년 3월 6일
0

Today I Learned

목록 보기
14/89
post-thumbnail

PRODUCT 실습

package kr.s27.collection;

public class Product {
	private String name;//상품명
	private int price;//상품가격
	private String num;//상품번호
	private String maker;//제조사
	private int stock;//재고
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getPrice() {
		return price;
	}
	public void setPrice(int price) {
		this.price = price;
	}
	public String getNum() {
		return num;
	}
	public void setNum(String num) {
		this.num = num;
	}
	public String getMaker() {
		return maker;
	}
	public void setMaker(String maker) {
		this.maker = maker;
	}
	public int getStock() {
		return stock;
	}
	public void setStock(int stock) {
		this.stock = stock;
	}
	
	
}
package kr.s27.collection;

import java.util.ArrayList;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class ProductMain {
	ArrayList<Product> list;
	BufferedReader br;
	
	public ProductMain() {
		list = new ArrayList<Product>();
		try {
			br = new BufferedReader(
					new InputStreamReader(System.in));
			callMenu();
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			if(br!=null)try {br.close();}catch(IOException e) {}
		}
	}
	//메뉴 호출
	public void callMenu()throws IOException{
		while(true) {
			System.out.print("1.상품 입력,2.상품목록 보기,3.종료>");
			try {
				          //String -> int
				int num = Integer.parseInt(br.readLine());
				if(num == 1) {//상품 입력
					input();
				}else if(num == 2) {//상품목록 보기
					output();
				}else if(num == 3) {//종료
					System.out.println("프로그램 종료");
					break;
				}else {
					System.out.println("잘못 입력했습니다.");
				}
			}catch(NumberFormatException e) {
				System.out.println("숫자만 허용!");
			}
		}
	}
	//상품 정보 입력
	public void input()throws IOException{
		Product p = new Product();
		System.out.print("상품명:");
		p.setName(br.readLine());
		System.out.print("상품번호:");
		p.setNum(br.readLine());
		System.out.print("가격:");
		            //String -> int
		p.setPrice(Integer.parseInt(br.readLine()));
		System.out.print("제조사:");
		p.setMaker(br.readLine());
		System.out.print("재고:");
		p.setStock(Integer.parseInt(br.readLine()));
		
		//Product를 ArrayList에 저장
		list.add(p);
		System.out.println("상품 정보 1건이 추가되었습니다.");
	}
	//상품 정보 출력
	public void output() {
		System.out.println(
				"상품리스트 : 총상품수("+list.size()+")");
		System.out.println("상품명\t상품번호\t가격\t제조사\t재고수");
		System.out.println("--------------------------------");
		//반복문을 이용한 요소의 출력
		/*
		for(int i=0;i<list.size();i++) {
			Product pt = list.get(i);
			System.out.printf("%s\t", pt.getName());
			System.out.printf("%s\t", pt.getNum());
			System.out.printf("%,d원\t", pt.getPrice());
			System.out.printf("%s\t", pt.getMaker());
			System.out.printf("%,d%n", pt.getStock());
		}
		*/
		//확장for문을 이용한 요소의 출력
		for(Product pt : list) {
			System.out.printf("%s\t", pt.getName());
			System.out.printf("%s\t", pt.getNum());
			System.out.printf("%,d원\t", pt.getPrice());
			System.out.printf("%s\t", pt.getMaker());
			System.out.printf("%,d%n", pt.getStock());
		}
	}
	
	public static void main(String[] args) {
		new ProductMain();
	}
}

MEMBER 실습

[실습]
메뉴 : 1. 회원정보 입력, 2. 회원정보 출력, 3. 종료
메서드명 : 메뉴 callMenu() , 회원정보 입력 register(), 회원정보 출력 printUserInfo()
입력시 조건 체크 : 나이는 1살 이상 입력 가능

package kr.s27.collection;

public class Member {
	private String name;//이름
	private int age;//나이
	private String job;//직업
	private String address;//주소
	private String phone;//전화번호
	
	public Member() {}
	
	public Member(String name, int age, String job, 
			             String address, String phone) {
		this.name = name;
		this.age = age;
		this.job = job;
		this.address = address;
		this.phone = phone;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getJob() {
		return job;
	}
	public void setJob(String job) {
		this.job = job;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	
}
package kr.s27.collection;

import java.util.ArrayList;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class MemberMain {
	ArrayList<Member> list;
	BufferedReader br;
	
	public MemberMain() {
		list = new ArrayList<Member>();
		try {
			br = new BufferedReader(
					new InputStreamReader(System.in));
			callMenu();
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			if(br!=null)try {br.close();}catch(IOException e) {}
		}
	}
	//메뉴
	public void callMenu()throws IOException{
		while(true) {
			System.out.print("1.회원정보 입력,2.회원정보 출력,3.종료>");
			try {
				int num = Integer.parseInt(br.readLine());
				if(num == 1) {//회원정보 입력
					register();
				}else if(num == 2) {//회원정보 출력
					printUserInfo();
				}else if(num == 3) {//종료
					System.out.println("프로그램 종료");
					break;
				}else {
					System.out.println("잘못 입력했습니다.");
				}
			}catch(NumberFormatException e) {
				System.out.println("숫자만 입력하세요!");
			}
		}
	}
	//회원정보 입력
	public void register()throws IOException{
		Member mb = new Member();
		System.out.print("이름:");
		mb.setName(br.readLine());
		
		mb.setAge(parseInputData("나이:"));
		
		System.out.print("직업:");
		mb.setJob(br.readLine());
		
		System.out.print("주소:");
		mb.setAddress(br.readLine());
		
		System.out.print("전화번호:");
		mb.setPhone(br.readLine());
		
		//Member 객체를 ArrayList에 저장
		list.add(mb);
	}
	
	//나이 조건 체크
	public int parseInputData(String item)throws IOException{
		while(true) {
			System.out.print(item);
			try {
				int age = Integer.parseInt(br.readLine());
				if(age<=0) {
					System.out.println("나이는 1살이상 입력 가능");
					continue;
				}
				return age;
			}catch(NumberFormatException e) {
				System.out.println("[숫자만 입력 가능]");
			}
		}
	}
	
	
	//회원정보 출력
	public void printUserInfo() {
		System.out.println(
				"회원목록 : 총회원수("+list.size()+")");
		System.out.println("---------------------------");
		System.out.println("이름\t나이\t직업\t주소\t전화번호");
		System.out.println("---------------------------");
		for(Member m : list) {
			System.out.print(m.getName()+"\t");
			System.out.print(m.getAge() + "\t");
			System.out.print(m.getJob() + "\t");
			System.out.print(m.getAddress() + "\t");
			System.out.println(m.getPhone());
		}
	}
	
	public static void main(String[] args) {
		new MemberMain();
	}
}

SCORE 실습

[실습]
메뉴 : 1.성적입력,2.성적출력,3.종료
메서드명 : 메뉴 callMenu(), 성적입력 inputScore(), 성적출력 printScore()
입력시 조건 체크 : 0부터100까지만 입력 가능

package kr.s27.collection;

public class Score {
	private String name;
	private int korean;
	private int english;
	private int math;
	
	//총점 구하기(int makeSum)
	public int makeSum() {
		return korean + english + math;
	}
	//평균 구하기(double makeAvg)
	public double makeAvg() {
		return makeSum()/3.0;
	}
	//등급 구하기(String makeGrade)
	public String makeGrade() {
		String grade;
		switch((int)(makeAvg()/10)) {
		case 10:
		case 9: grade = "A"; break;
		case 8: grade = "B"; break;
		case 7: grade = "C"; break;
		case 6: grade = "D"; break;
		default : grade = "F";
		}
		return grade;
	}
	//get/set 메서드 정의
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getKorean() {
		return korean;
	}
	public void setKorean(int korean) {
		this.korean = korean;
	}
	public int getEnglish() {
		return english;
	}
	public void setEnglish(int english) {
		this.english = english;
	}
	public int getMath() {
		return math;
	}
	public void setMath(int math) {
		this.math = math;
	}
}
package kr.s27.collection;

public class ScoreValueException extends Exception{
	public ScoreValueException(String message) {
		super(message);
	}
}
package kr.s27.collection;

import java.util.ArrayList;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ScoreMain {
	ArrayList<Score> list;
	BufferedReader br;
	
	public ScoreMain() {
		list = new ArrayList<Score>();
		try {
			br = new BufferedReader(
					new InputStreamReader(System.in));
			callMenu();
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			if(br!=null)try {br.close();}catch(IOException e) {}
		}
	}
	//메뉴
	public void callMenu() throws IOException{
		while(true) {
			System.out.print("1.성적입력,2.성적출력,3.종료>");
			try {
				int num = Integer.parseInt(br.readLine());
				if(num == 1) {//성적입력
					inputScore();
				}else if(num == 2) {//성적출력
					printScore();
				}else if(num == 3) {//종료
					System.out.println("프로그램 종료");
					break;
				}else {
					System.out.println("잘못 입력했습니다.");
				}
			}catch(NumberFormatException e) {
				System.out.println("숫자만 입력하세요!");
			}
		}
	}
	//성적입력
	public void inputScore() throws IOException{
		Score s = new Score();
		System.out.print("이름:");
		s.setName(br.readLine());
		
		s.setKorean(parseInputData("국어:"));
		s.setEnglish(parseInputData("영어:"));
		s.setMath(parseInputData("수학:"));
		
		list.add(s);		
	}
	//성적입력 조건 체크
	public int parseInputData(String course)
			                  throws IOException{
		while(true) {
			System.out.print(course);//과목 표시
			try {
				int num = Integer.parseInt(br.readLine());
				//성적 유효 범위(0~100) 체크
				if(num<0 || num>100) {
					throw new ScoreValueException(
							       "0부터100까지만 입력 가능");
				}
				return num;//정상 값 반환
			}catch(NumberFormatException e) {
				System.out.println("[숫자만 입력 가능]");
			}catch(ScoreValueException e) {
				System.out.println(e.getMessage());
			}
		}
	}
	
	//성적출력
	public void printScore() {
		System.out.println("--------------------------------");
		System.out.println("이름\t국어\t영어\t수학\t총점\t평균\t등급");
		System.out.println("--------------------------------");
		for(Score s : list) {
			System.out.print(s.getName()+"\t");
			System.out.print(s.getKorean() + "\t");
			System.out.print(s.getEnglish() + "\t");
			System.out.print(s.getMath() + "\t");
			System.out.print(s.makeSum() + "\t");
			System.out.printf("%.2f\t", s.makeAvg());
			System.out.println(s.makeGrade());
		}
	}
	public static void main(String[] args) {
		new ScoreMain();
	}
}

STACK

  • 스택(stack)은 배낭에 물건을 넣을 때처럼 제일 마지막에 넣은 데이터부터 순서대로 꺼낼 수 있는 자료구조를 말한다.
    이렇게 가장 나중에 넣었던 데이터를 가장 먼저 꺼내는 입출력 방식을 LIFO(Last-In First-Out)방식이라고 한다.
package kr.s27.collection;

import java.util.Stack;

public class StackMain {
	public static void main(String[] args) {
		//스택(Stack) : 후입선출 LIFO (Last-In First-Out) 방식
		String[] array = {"진달래","백합","개나리","벚꽃","장미"};
		
		Stack<String> stk = new Stack<String>();
		//반복문을 이용해서 Stack에 요소 저장
		for(int i=0;i<array.length;i++) {
			stk.push(array[i]);//객체 저장
		}
		
		//저장된 용소의 목록
		System.out.println(stk);
		System.out.println("------------");
		
		//현재 스택이 비어 있는지 검증
		while(!stk.isEmpty()) {
			                 //스택에 저장된 객체를 꺼내온다 
			System.out.print(stk.pop() + "\t");
		}
		System.out.println("\n--------------");
		
		System.out.println(stk);		
	}
}

QUEUE

  • 큐(queue)는 매표소에 줄을 서서 기다리는 사람들처럼 들어온 순서대로 데이터를 꺼낼 수 있는 자료구조.
    가장 처음에 넣었던 데이터를 가장 먼저 꺼내는 입출력 방식을 FIFO(First-In First-Out)방식이라고 한다.
package kr.s27.collection;

import java.util.LinkedList;

public class QueueMain {
	public static void main(String[] args) {
		//큐(Queue) : 선입선출 FIFO(First-In First-Out) 방식
		String[] array = {"서울","부산","대구","광주","인천"};
		
		LinkedList<String> linked = 
				          new LinkedList<String>();
		for(int i=0;i<array.length;i++) {
			//LinkedList에 요소를 저장
			linked.offer(array[i]);
		}
		//저장된 요소의 목록
		System.out.println(linked);
		System.out.println("----------------");
		     //큐에 저장된 첫번째 요소를 검색
		while(linked.peek() != null) {
			                //큐에 저장된 첫번째 요소를 반환하고 제거
			System.out.print(linked.poll() + "\t");
		}
		System.out.println("\n----------------");
		System.out.println(linked);
		
	}
}

HASH SET

Hash Set : 중복값 불허

package kr.s27.collection;

import java.util.HashSet;
import java.util.Iterator;

public class HashSetMain01 {
	public static void main(String[] args) {
		//
		String[] array = {"Java","JSP","Java","Oracle"};
		
		HashSet<String> hs = new HashSet<String>();
		for(String n : array) {
			hs.add(n);//중복 불허
		}
		//저장된 요소의 목록
		System.out.println(hs);
		System.out.println("-------------");
		//저장된 요소의 출력
		Iterator<String> ir = hs.iterator();
		while(ir.hasNext()) {
			System.out.println(ir.next());
		}
		System.out.println("-------------");
		
		for(String s : hs) {
			System.out.println(s);
		}
		
	}
}
package kr.s27.collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;

public class HashSetMain02 {
	public static void main(String[] args) {
		HashSet<Integer> hs = new HashSet<Integer>();
		while(hs.size()<6) {
			                 //1~45
			Integer ir = (int)(Math.random()*45) + 1;
			//중복값을 허용하지 않음
			hs.add(ir);
		}
		//HashSet -> Set -> Collection
		List<Integer> list = new ArrayList<Integer>(hs);
		//오름차순 정렬
		Collections.sort(list);
		
		for(int num : list) {
			System.out.print(num + "\t");
		}
		
	}
}

HASH MAP

Map : key와 value의 쌍으로 저장 저장된 순서가 유지되지 않음

package kr.s27.collection;

import java.util.HashMap;

public class HashMapMain01 {
	public static void main(String[] args) {
		HashMap<String,Integer> map = 
				new HashMap<String,Integer>();
		map.put("김신", 95);
		map.put("지은탁", 100);
		map.put("저승사자", 85);
		map.put("써니", 93);
		map.put("유덕화", 70);
		//key가 중복되면 마지막에 입력 값이 인정
		map.put("지은탁", 0);
		//key와 value에 null 허용
		map.put("강호동", null);
		map.put(null,100);
		
		//저장된 데이터(key와 value의 쌍)의 목록
		System.out.println(map);
		System.out.println("---------------");
		
		Integer num = map.get("지은탁");
		System.out.println("지은탁의 성적은 " + num);
		
	}
}
package kr.s27.collection;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class HashMapMain02 {
	public static void main(String[] args) {
		String[] msg = {"Berlin","Paris","Seoul","New York","London"};
		
		HashMap<Integer,String> map = 
				new HashMap<Integer,String>();
		//HashMap에 key와 value 저장
		for(int i=0;i<msg.length;i++) {
			map.put(i, msg[i]);
		}
		//HashMap의 데이터 목록 호출
		System.out.println(map);
		System.out.println("--------------------");
		
		//Set<Integer> s = map.keySet();
		//Iterator<Integer> keys = s.iterator();
		Iterator<Integer> keys = map.keySet().iterator();
		while(keys.hasNext()) {
			Integer key = keys.next();
			System.out.println(key + ", " + map.get(key));
		}
	}
}

HASH TABLE

package kr.s27.collection;

import java.util.Enumeration;
import java.util.Hashtable;

public class HashtableMain {
	public static void main(String[] args) {
		Hashtable<String,Object> h = 
				new Hashtable<String,Object>();
		h.put("name", "홍길동");
		h.put("age", 27);
		h.put("tel", "010-1234-5678");
		h.put("job", "경찰");
		h.put("address", "서울");
		//key가 중복되면 마지막에 입력한 값이 인정
		h.put("name", "홍길순");
		//key와 value에 null 불허
		//h.put("hobby", null);
		//h.put(null, "프로그래머");
		
		//저장된 데이터(key와 value의 쌍)의 목록
		System.out.println(h);
		System.out.println("-------------");
		//key를 통해서 value 구하기
		String name = (String)h.get("name");
		Integer age = (Integer)h.get("age");
		System.out.println(name + ", " + age);
		System.out.println("-------------");
		
		//Enumeration을 이용해서 key 구하기
		Enumeration<String> en = h.keys();
		while(en.hasMoreElements()) {
			String key = en.nextElement();
			System.out.println(key + ", " + h.get(key));
		}
		
	}
}
profile
Lucky Things🍀

0개의 댓글