kh16일차(set,map,PointMgr7,StudentMgr5,Exception,io)
2022. 7. 11. 18:20ㆍ코딩/Java
setTest
package kh.java.func;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
public class SetTest {
public void setTest() {
HashSet<Integer> set = new HashSet<Integer>();
System.out.println("set 의 길이 : " + set.size());
set.add(10);
System.out.println("set 의 길이 : " + set.size());
System.out.println(set);
set.add(20);
System.out.println("set 의 길이 : " + set.size());
System.out.println(set);
set.add(30);
System.out.println(set);
set.add(10);
System.out.println(set); // 중복을 허용하지않음 이미 10이 있기에 10 이란 데이터가 안들어감
boolean bool1 = set.add(20);// 데이터 추가를 시도하고 그 결과를 리턴한다
System.out.println(bool1);
boolean bool2 = set.add(100);
System.out.println(bool2);
System.out.println(set);
set.remove(100);// 매개변수로 받은 데이터와 일치하는 값을 찾아 삭제
System.out.println(set);
// set은 index로 관리하지 않기 때문에 꺼내는 방법이 필요
// 1. foreach를 쓰는 방법
for (Integer num : set) {
System.out.println(num);
}
// 2.ArrayList를 이용한 방법
// set에 저장된 데이터와 동일한 타입을 저장할 수 있는 ArrayList를 생성
ArrayList<Integer> list = new ArrayList<Integer>(set);
// 생성자에 set을 넣으면 set을 list로 변환
System.out.println(list);
// 3.반복자 (iterator)를 이용한 방법
Iterator<Integer> iter = set.iterator();
// hasNext() : 꺼내올 값이 남아있으면 t/ 없으면 f리턴
// next(): 값 한개를 꺼내옴
// 이 while문이 foreach문의 원리
while (iter.hasNext()) {// 꺼내올것이 있는동안 반복
Integer num = iter.next();
System.out.println(num);
}
}
순서대로 나오지 않고 중복또한 허용하지않음
Lotto
public void lotto() {
Scanner sc = new Scanner(System.in);
HashSet<Integer> userNum = new HashSet<Integer>();
while (userNum.size() < 6) {
System.out.println("사용자 번호 입력 [1~45] : ");
int num = sc.nextInt();
if (num > 0 && num < 46) {
boolean bool = userNum.add(num);// 중복체크해줄것 true면 중복이 아니고 flase면 중복
if (!bool) {
System.out.println("중복된 숫자 입니다.");
}
} else {
System.out.println("1~45 사이 숫자를 입력 하세요.");
}
ArrayList<Integer> userList = new ArrayList<Integer>(userNum);
Collections.sort(userList);
System.out.println(userList);
}
}
}
Maptest
package kh.java.func;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;
public class Maptest {
public void mapTest1() {
ArrayList<String> list = new ArrayList<String>();
list.add("hi");
list.add("hello");
list.add("bye");
list.add("hi");
System.out.println(list.get(1));
// 정수를 통해서 문자열을 관리하는 맵생성
HashMap<Integer, String> map = new HashMap<Integer, String>();
map.put(0, "hi");
map.put(1, "hello");
map.put(2, "bye");
map.put(3, "hi");
System.out.println(map.get(1));
}
public void mapTest2() {
HashMap<String, String> map = new HashMap<String, String>();
// put(key,value) : map에 데이터를 삽입하는 메소드
map.put("one", "hi");
map.put("two", "hello");
map.put("three", "bye");
System.out.println(map);
System.out.println(map.get("two"));
System.out.println(map.get("three"));
map.put("two", "집");// 키값이 겹치면 기존데이터가 날아가고 덮어씌움
System.out.println(map.get("two"));
System.out.println(map);
map.put("zero", "hi");
System.out.println(map);
System.out.println(map.get("four"));
//containsKey(param) :매개변수로 받은 데이터가 key로 사용중이면 true, 사용중이지 않으면 false 리턴
boolean bool1 = map.containsKey("one");
boolean bool2 = map.containsKey("four");
System.out.println(bool1);
System.out.println(bool2);
//remove(key) : 키값에 해당하는 데이터를 삭제
map.remove("two");
System.out.println(map);
//map에 있는 모든데이터를 꺼내오고 싶은경우
//keySet() : 모든키값은 Set형태로 반환
Set<String> keys = map.keySet();//map의 모든 key를 set형태로 가져오는것
for(String key : keys) {
System.out.println(map.get(key));
}
}
}
1출력
2출력
PointMgr7
PointController
package kr.or.iei.point.controller;
import java.util.HashMap;
import kr.or.iei.point.view.PointView;
import kr.or.iei.point.vo.Grade;
public class PointController {
private HashMap<String, Grade> members;//HashMap<String, Grade> 형식에 members라는 객체생성
private PointView view; //PointView 형식의 view 객체생성
public PointController() {
super();
members = new HashMap<String, Grade>();//members 에 new HashMap<String, Grade>형태생성
view = new PointView(); //view 에 new PointView();형태생성
}
public void main() {
while (true) {
int sel = view.showMenu();//showMenu에 있는print문 보여주고 받은 입력값 sel에 저장
switch (sel) {//받은 sel 값에 따라 아래 case문 실행
case 1:
insertMember();
break;
case 2:
printAllMember();
break;
case 3:
printOneMember();
break;
case 4:
updateMember();
break;
case 5:
deleteMember();
break;
case 0:
return;
}// case
} // while
}// 메인
public void insertMember() {
Grade g = view.insertMember();
// insertMember에서 Grade형식으로 값을 받아와 Grade g에 저장
members.put(g.getName(), g);
// Grade g에 저장한 것중 이름을 key로 사용하고 Grade g에 저장한 모든것을 value로 설정해 map에 저장
}
public void printAllMember() {//printAllMember
view.printAllMember(members);
}
public void printOneMember() {
String name = view.getName("조회");//조회할이름을 입력받아서 name에 넣는다
if (members.containsKey(name)) {//name에 들어간 이름이 name(key)값에 있는지 조회한다 있다면
Grade g = members.get(name);//g에 얻은 이름에 저장된 데이터를 넣는다
view.printOneMember(g);//그 g에 있는 데이터를 출력한다.
} else {
view.noSearchMembers();
}
}
public void updateMember() {
String name = view.getName("수정");//수정할 이름을 입력받아서 name에 넣는다
if(members.containsKey(name)) {//name에 들어간 이름이 name(key)값에 있는지 조회 있다면 안으로
Grade g = view.updateMember();//조회된 객체의 데이터를 변경후 Grade g에 대입
members.put(g.getName(), g);//key값에 이름을 넣고 value에 Grade g에 저장된 데이터를 넣는다
//이때 이름이 같다면 덮어씌우지만 다를경우에는 그냥 추가되기때문에 후속조치가 필요하다.
if(!name.equals(g.getName())) {//검색한 이름이 업데이트한 이름과 다르다면
members.remove(name); //검색한 이름 삭제.
}
}else {
view.noSearchMembers();
}
}
public void deleteMember() {
String name = view.getName("삭제");
if(members.containsKey(name)) {
members.remove(name);
}else {
view.noSearchMembers();
}
}
}// 끝
PointView
package kr.or.iei.point.view;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;
import kr.or.iei.point.vo.Gold;
import kr.or.iei.point.vo.Grade;
import kr.or.iei.point.vo.Silver;
import kr.or.iei.point.vo.Vip;
import kr.or.iei.point.vo.Vvip;
public class PointView {
private Scanner sc;
public PointView() {
super();
// TODO Auto-generated constructor stub
sc = new Scanner(System.in);
}
public int showMenu() {
// TODO Auto-generated method stub
System.out.println("=====회원 관리 프로그램=====");
System.out.println("1.회원 등록");
System.out.println("2.회원 전체 출력");
System.out.println("3.회원 한명 출력");
System.out.println("4.회원 정보 수정");
System.out.println("5.회원 정보 삭제");
System.out.println("0.프로그램 종료");
int sel = sc.nextInt();
return sel;
}
public Grade insertMember() {
System.out.println("=====회원 정보 등록=====");
System.out.print("등급 입력[silver/gold/vip/vvip] : ");
String grade = sc.next();
System.out.print("이름 입력 : ");
sc.nextLine();
String name = sc.nextLine();
System.out.print("포인트 입력 : ");
int point = sc.nextInt();
Grade gra = null;
switch (grade) {
case "silver":
Silver s = new Silver(grade, name, point);
gra = (Grade) s;
break;
case "gold":
Gold g = new Gold(grade, name, point);
gra = (Grade) g;
break;
case "vip":
Vip v = new Vip(grade, name, point);
gra = (Grade) v;
break;
case "vvip":
Vvip vv = new Vvip(grade, name, point);
gra = (Grade) vv;
break;
}
return gra;
}
public void printAllMember(HashMap<String, Grade> members) {
System.out.println("=====전체 회원 출력=====");
System.out.println("등급\t이름\t포인트\t보너스");
Set<String> names = members.keySet();// members에 키로 등록된걸 전부 꺼내서 names에 String형식으로 등록
for (String name : names) {// names에 등록되있는걸 전부 name부분에 집어넣는다.
Grade g = members.get(name);
System.out.println(g.getGrade() + "\t" + g.getName() + "\t" + g.getPoint() + "\t" + g.getBonus());
}
}
public String getName(String str) {
System.out.println("=====회원 정보 " + str + "=====");
System.out.print(str + "할 이름 입력 : ");
String name = sc.next();
return name;
}
public void noSearchMembers() {
System.out.println("회원 정보를 찾을 수 없습니다.");
}
public void printOneMember(Grade g) {
// TODO Auto-generated method stub
System.out.println("등급 :" + g.getGrade());
System.out.println("이름 :" + g.getName());
System.out.println("포인트 :" + g.getPoint());
System.out.println("보너스 :" + g.getBonus());
}
public Grade updateMember() {
System.out.println("=====수정 할 회원 정보 등록===== ");
System.out.print("등급 입력 [silver/gold/vip/vvip] : ");
String grade = sc.next();
System.out.print("이름 입력 : ");
sc.nextLine();
String name = sc.next();
System.out.print("포인트 입력 : ");
int point = sc.nextInt();
switch (grade) {
case "silver":
Silver s = new Silver(grade, name, point);
return s;
case "gold":
Gold g = new Gold(grade, name, point);
return g;
case "vip":
Vip v = new Vip(grade, name, point);
return v;
case "vvip":
Vvip vv = new Vvip(grade, name, point);
return vv;
}
return null;
}
}
StudentMgr5
controller
package kr.or.student.controller;
import java.util.HashMap;
import kr.or.iei.student.vo.Student;
import kr.or.student.view.StudentView;
public class StudentController {
// 키값으로 이름을 사용하고 , value는 학생객체사용
private HashMap<String, Student> students;
private StudentView view;
public StudentController() {
super();
students = new HashMap<String, Student>();
view = new StudentView();
}
public void main() {
while (true) {
int sel = view.showMenu();
switch (sel) {
case 1:
insertStudent();
break;
case 2:
printAllStudent();
break;
case 3:
printOneStudent();
break;
case 4:
updateStudent();
break;
case 5:
deleteStudent();
break;
case 0:
return;
}
}
}
public void updateStudent() {
String name = view.getName("수정");
if(students.containsKey(name)) {//입력받은 이름이 있는지 조회
Student s = view.updateStudent();
students.put(s.getName(), s);//put 데이터 삽입//key가 겹치면 덮어씌움
if(!name.equals(s.getName())) {//추가를 하고난뒤 기존것을 지워서 수정하는것 안지우면 그냥 추가임
students.remove(name);
}
}else {
view.noSearchStudent();
}
}
public void insertStudent() {
Student s = view.insertStudent();
// 입력 받은 값 중 이름을 key
// Student 객체를 value로 설정하여 map에 저장
students.put(s.getName(), s);
}
public void printAllStudent() {
view.printAllStudent(students);// students는 맵이름
}
public void printOneStudent() {
String name = view.getName("조회");
if (students.containsKey(name)) {// 입력받은 이름(키값)이 있는 지 조회
Student s = students.get(name);
view.printOneStudent(s);
} else {
view.noSearchStudent();
}
}
public void deleteStudent() {
String name = view.getName("삭제");
if (students.containsKey(name)) {
students.remove(name);
} else {
view.noSearchStudent();
}
}
}
view
package kr.or.student.view;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;
import kr.or.iei.student.vo.Student;
public class StudentView {
private Scanner sc;
public StudentView() {
super();
// TODO Auto-generated constructor stub
sc = new Scanner(System.in);
}
public int showMenu() {
// TODO Auto-generated method stub
System.out.println("=====학생관리 프로그램5=====");
System.out.println("1. 학생 정보 등록");
System.out.println("2. 전체 학생 출력");
System.out.println("3. 학생 1명 출력");
System.out.println("4. 학생 정보 수정");
System.out.println("5. 학생 정보 삭제");
System.out.println("0. 프로그램 종료");
System.out.println("선택 > ");
int sel = sc.nextInt();
return sel;
}
public Student insertStudent() {
System.out.println("=====학생 정보 등록=====");
System.out.print("이름 입력 : ");
String name = sc.next();
System.out.print("나이 입력 : ");
int age = sc.nextInt();
System.out.print("주소 입력 : ");
sc.nextLine();
String addr = sc.nextLine();
Student s = new Student(name, age, addr);
return s;
}
public void printAllStudent(HashMap<String, Student> students) {
System.out.println("=====전체 학생 출력=====");
System.out.println("이름\t나이\t주소");
Set<String> names = students.keySet();// students에 키로 등록된걸 다꺼내서 names에 저장
for (String name : names) {
Student s = students.get(name);
System.out.println(s.getName() + "\t" + s.getAge() + "\t" + s.getAddr());
}
}
public String getName(String str) {
System.out.println("=====학생 정보 "+str+"=====");
System.out.print(str + "할 이름 입력 : ");
String name = sc.next();
return name;
}
public void noSearchStudent() {
// TODO Auto-generated method stub
System.out.println("학생 정보를 찾을 수 없습니다.");
}
public void printOneStudent(Student s) {
System.out.println("이름 : "+s.getName());
System.out.println("나이 : "+s.getAge());
System.out.println("주소 : "+s.getAddr());
}
public Student updateStudent() {
System.out.print("수정 이름 입력 : ");
String name = sc.next();
System.out.print("수정 나이 입력 : ");
int age = sc.nextInt();
System.out.print("수정 주소 입력 : ");
sc.nextLine();
String addr = sc.nextLine();
Student s = new Student(name, age, addr);
return s;
}
}
ByteStreamTest
package kh.java.func;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class ByteStreamTest {
Scanner sc;
public ByteStreamTest() {
super();
sc = new Scanner(System.in);
// TODO Auto-generated constructor stub
}
public void PrimaryStream() {
// 1.스트림생성 -> 2.메소드를 통한 입/출력 ->3.자원반환
System.out.println("저장할 파일명 입력 : ");
String filename = sc.nextLine();
FileOutputStream fos = null;
try {
//입력받은 파일명으로 파일생성
//생성된 파일과 프로그램이 stream연결
fos = new FileOutputStream("C:\\Users\\user1\\Desktop\\"+filename);//저장 경로 변환
String str = "hello";
byte[]arr = str.getBytes();//문자열을 바이트 배열로 변환
//write메소드의 매개변수가 byte[]타입이기때문에
fos.write(arr);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
'코딩 > Java' 카테고리의 다른 글
kh18일차(Server연결 TCP/DNS서버연결, 이를이용한 baseball게임) (0) | 2022.07.13 |
---|---|
kh17일차 InputOutput(WordContorller) (0) | 2022.07.12 |
kh15일차 (Generics,List,studentMgr4,pointMgr5...) (0) | 2022.07.08 |
kh14일차 (0) | 2022.07.07 |
kh12일차 (0) | 2022.07.06 |