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();
}
}
[실습]
메뉴 : 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();
}
}
[실습]
메뉴 : 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();
}
}
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);
}
}
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 : 중복값 불허
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");
}
}
}
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));
}
}
}
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));
}
}
}