명품자바프로그래밍 Chapter7_Lab06
실습1| Vector <Integer> 실습
import java.util.Scanner;
import java.util.Vector;
public class VectorTest {
public static void PrintV(Vector<Integer> v) {
//삭제전, 후 Vector 출력
System.out.print("["); //[ 출력
for(int i = 0; i<v.size()-1;i++) { //0 ~ v.size()-1 까지 출력
int x = v.get(i);
System.out.print(x+ ", "); // , 때문에 v.size()-1 까지 출력 후
}
System.out.print(v.get(v.size()-1) + "]\n"); //마지막 숫자를 따로 출력 + ]
}
public static void DeleteBig(Vector<Integer> v) {
int d_big = 0; //가장 큰 숫자의 인덱스를 저장할 변수
for (int i =1; i<v.size(); i++) { //1 번째 부터 비교
if (v.get(d_big) < v.get(i)) { //크기 비교
d_big = i; // 새로 비교되는 대상이 클 경우 d_big에 해당 인덱스 저장
}
}
System.out.println("가장 큰 수 "+ v.get(d_big) + " 삭제");
v.remove(d_big); //remove는 메소드는 index를 넘겨주어야함
}
public static void DeleteSmall(Vector<Integer> v) { //인덱스로 비교
int d_small = 0; //가장 큰 작은의 인덱스를 저장할 변수
for (int i =1; i<v.size(); i++) { //1 번째 부터 비교
if (v.get(d_small) > v.get(i)) { //크기 비교
d_small = i; // 새로 비교되는 대상이 작을 경우 d_small에 해당 인덱스 저장
}
}
System.out.println("가장 작은 수 "+ v.get(d_small) + " 삭제");
v.remove(d_small); //remove는 메소드는 index를 넘겨주어야함
}
public static void main(String[] args) {
Vector<Integer> v = new Vector<>(); //Vector<Integer> 생성
Scanner scan = new Scanner(System.in); //Scanner 생성
// 사용자로부터 여러개의 정수를 입력받아서 저장
System.out.print("정수(-1이 입력될 때까지)>> ");
while(true){
int n = scan.nextInt();
if(n == -1) //-1을 입력받았을시 while문 탈출
break;
v.add(n); //입력한 n들을 Vector에 추가
}
scan.close();
System.out.print("삭제 전 : ");
PrintV(v); // 삭제 전 값들 프린트
DeleteBig(v); // 가장 큰 수 삭제
System.out.print("삭제 후 : ");
PrintV(v); // 삭제 후 값들 프린트
DeleteSmall(v); // 가장 작은 수 삭제
System.out.print("삭제 후 : ");
PrintV(v); // 삭제 후 값들 프린트
}
}
실습4| 강수량 관리 프로그램
import java.util.Scanner;
import java.util.Vector;
public class VectorRainfall {
public static void main(String[] args) {
Vector<Integer> v = new Vector<>(); //Vector 컬렉션 사용
Scanner scan = new Scanner(System.in); //Scanner 선언
while(true){ //0을 입력받아 break가 때까지 반복
System.out.print("강수량 입력 (0 입력시 종료)>> ");
int n = scan.nextInt(); //int형으로 입력 받기
if (n == 0) //0을 입력받으면 break. while문 탈출
break;
v.add(n); // Vector에 해당 element를 삽입
int equal = 0;
for(int i=0; i<v.size();i++) { // 강수량 입력한거 전체 출력 (0부터 vector의 사이즈 전까지 )
System.out.print(v.get(i)+ " "); // 전체 element를 반복문이 돌아가면서 출력
equal += v.get(i); // equal 에 해당 값을 누적해서 더하기
}
equal /= v.size(); // 더한 것을 vector의 크기만큼 나누기.
System.out.println("\n현재 평균 " + equal); // 평균 출력
}
scan.close();
}
}
실습6| 도시 위도, 경도 정보 저장(Location.java, LocationManager.java)
public class Location {
private String city; // 도시 이름 (문자열)
private double longitude; //경도 (실수)
private double latitude; //위도 (실수)
public Location(String city, double longitude, double latitude) { //생성자
this.city = city;
this.longitude = longitude;
this.latitude = latitude;
}
public String getCity() { //각각의 Setter, Getter 메소드 생성
return city;
}
public void setCity(String city) {
this.city = city;
}
public double getLongitude() {
return longitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
public double getLatitude() {
return latitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
}
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
public class LocationManger {
public static void printAll(HashMap<String,Location> map) { //모든 요소들 출력, (key, Location)쌍 출력
Set<String> keys = map.keySet(); // key 문자열을 가진 집합 Set 컬렉션 리턴.
Iterator<String> it = keys.iterator(); //key 문자열을 순서대로 접근할 수 있는 iterator 리턴
System.out.println("------------------------------");
while(it.hasNext()) {
String city = it.next(); //도시 이름 알아내기
Location lo = map.get(city); //city를 key로 map에서 해당 Location 객체 찾기
System.out.println(lo.getCity() + "\t" + lo.getLongitude() + "\t" + lo.getLatitude() ); //모두 출력
}
}
public static void main(String[] args) {
HashMap<String,Location> map = new HashMap<String,Location>(); //도시이름을 key로 하는 HashMap<String,Location> 컬렉션 생성
Scanner scan = new Scanner(System.in); //scanner 생성
System.out.println("도시,위도,경도를 입력하세요.");
for(int i =0;i<4;i++) {// 4개의 도시를 입력하라고 문제에서 제시해서 for문으로 4번 반복
System.out.print(">> ");
String full = scan.nextLine();
String[] s = full.split(","); //,를 기준으로 split해서 s 배열에 넣기
String city = s[0]; //city는 0번째 인덱스
double longitude = Double.parseDouble(s[1]); //위도는 1번째 인덱스
double latitude = Double.parseDouble(s[2]); //경도는 2번째 인덱스
Location lo = new Location(city,longitude,latitude); //lo 클래스에 각각 입력받은 내용들로 클래스 생성
map.put(city, lo); //해시맵에 각각 추가 (city는 키, lo는 값)
}
printAll(map); //해시 맵에 있는 모든 도시출력
System.out.println("------------------------------");
while(true) {
System.out.print("도시 이름 >> ");
String city = scan.next(); //사용자로 부터 입력
if(city.equals("그만")) break; //그만을 입력할 경우 while문 탈출
Location lo = map.get(city); //city이름에 해당하는 Location 객체 검색
if (lo == null) // lo가 없는 경우 --> 없는 도시
System.out.println(city + "는 없는 도시입니다.");
else //lo 가 있을 경우 --> 있는 도시
System.out.println(lo.getCity() + "\t" + lo.getLongitude() + "\t" + lo.getLatitude());
}
scan.close();
}
}
실습8 | 고객 포인트 점수 관리 프로그램
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
public class CustomerManager {
public static void printAll(HashMap<String,Integer> map) { //모든 요소들 출력, (key, Location)쌍 출력
Set<String> keys = map.keySet(); // key 문자열을 가진 집합 Set 컬렉션 리턴.
Iterator<String> it = keys.iterator(); //key 문자열을 순서대로 접근할 수 있는 iterator 리턴
while(it.hasNext()) {
String name = it.next(); //이름 알아내기
int point = map.get(name); //name을 key로 map에서 해당 point객체 찾기
System.out.print("("+ name +","+ point +")"); //모두 출력
}
}
public static void main(String[] args) {
HashMap<String,Integer> map = new HashMap<String,Integer>();
Scanner scan = new Scanner(System.in);
System.out.print("** 포인트 관리 프로그램입니다 **");
while(true) {
System.out.print("\n이름과 포인트 입력>> ");
String name = scan.next(); //이름 입력 받기
if (name.equals("그만")) break; //그만을 입력했으면 프로그램종료
int point = scan.nextInt(); //포인트 입력받기
Integer x = map.get(name); // 이름에 해당하는 Integer 객체 검색
if (x != null) { //기존에 이름이 있을 경우
point += x; //누적 합
}
map.put(name,point); //신규일 경우 map에 추가 (name과 point)
printAll(map); //현재까지의 총 map 프린트
}
scan.close();
}
}
+ 추가 과제
* 영화 정보 프로그램 (Movie.java, MovieTest.java)
public class Movie {
private String title; //제목
private String director; //감독
private String genre; //장르
private int release; //개봉연도
public Movie(String title, String director, String genre, int release) { //생성자
this.title = title;
this.director = director;
this.genre = genre;
this.release = release;
}
public String getTitle() { //각각의 Setter 와 Getter 생성
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDirector() {
return director;
}
public void setDirector(String director) {
this.director = director;
}
public String getGenre() {
return genre;
}
public void setGenre(String genre) {
this.genre = genre;
}
public int getRelease() {
return release;
}
public void setRelease(int release) {
this.release = release;
}
@Override
public String toString() { //toString으로 문자열 반환 (2번 menu에서 사용할 string)
return "[제목 :" + title + ", 감독:"+ director +", 장르:" + genre + ", 개봉년도:"+ release+"]";
}
}
import java.util.Scanner;
import java.util.Vector;
public class MovieTest {
public static Vector<Movie> v = new Vector<>(); //Vector 컬렉션 사용
public static Scanner scan = new Scanner(System.in); //Scanner 선언
public static void menu1() { // 영화 정보 입력
System.out.print("제목:");
String title = scan.nextLine();
System.out.print("감독:");
String director = scan.nextLine();
System.out.print("장르:");
String genre = scan.nextLine();
System.out.print("년도:");
int release = scan.nextInt();
Movie m = new Movie(title,director,genre,release); // 입력받은 정보를 토대로 Movie 객체 생성
v.add(m); // Vector에 해당 Movie 객체 삽입
}
public static void menu2() { // 영화 정보 출력
for(int i =0; i<v.size();i++) { //movie 객체의 개수 만큼 print
Movie m = v.get(i); //벡터에서 i번째 Movie 객체얻어내기
System.out.println(m); //m.toString()을 이용해서 객체 m출력
}
}
public static void menu3() { // 영화 정보 검색
System.out.print("검색할 제목 입력:");
String Searchtitle = scan.nextLine();
for(int i =0;i<v.size(); i++) { //기존에 저장된 Movie객체와 입력한 제목이랑 비교
Movie m = v.get(i); //Vector의 i번째 객체를 Movie m 에 저장
if(Searchtitle.equals(m.getTitle())) { //입력한 title이 Movie 객체의 title과 같을 경우
System.out.println(m);
break;
}
if (i == v.size()-1 && !Searchtitle.equals(m.getTitle())) // 반복문의 마지막번째 까지 도달했을경우, 그리고 검색결과 false일 경우
System.out.println("검색한 제목의 영화가 없습니다."); //검색한 제목의 영화가 없음
}
}
public static void menu4() { // 영화 정보 수정
System.out.print("수정할 제목 입력:");
String Searchtitle = scan.nextLine();
int j=0;
for(int i =0;i<v.size(); i++) { //기존에 저장된 Movie객체와 입력한 제목이랑 비교
Movie m = v.get(i); //Vector의 i번째 객체를 Movie m 에 저장
if(Searchtitle.equals(m.getTitle())) {//입력한 title이 Movie 객체의 title과 같을 경우
System.out.println(m);
j = i; //해당 인덱스를 j에 저장
break;
}
if(i == v.size()-1 && !Searchtitle.equals(m.getTitle())) // 반복문의 마지막번째 까지 도달했을경우, 그리고 검색결과 false일 경우
System.out.println("수정할 제목의 영화가 없습니다.");
}
System.out.print("제목:");
String title = scan.nextLine();
System.out.print("감독:");
String director = scan.nextLine();
System.out.print("장르:");
String genre = scan.nextLine();
System.out.print("년도:");
int release = scan.nextInt();
Movie m = new Movie(title,director,genre,release); // Movie 객체 재생성
v.set(j,m); // Vector의 수정할 번호의 인덱스 j에 수정된 내용의 Movie 객체 삽입
}
public static void menu5() {
System.out.print("삭제할 영화 제목 입력: ");
String Searchtitle = scan.nextLine();
int j =0;
for(int i =0;i<v.size(); i++) { //기존에 저장된 Movie객체와 입력한 제목이랑 비교
Movie m = v.get(i); //Vector의 i번째 객체를 Movie m 에 저장
if(Searchtitle.equals(m.getTitle())) {//입력한 title이 Movie 객체의 title과 같을 경우
System.out.println(m+ "을 삭제합니다.");
v.remove(j); //인덱스를 넘겨주어서 삭제
break;
}
if (i == v.size()-1 && !Searchtitle.equals(m.getTitle())) // 반복문의 마지막번째 까지 도달했을경우, 그리고 검색결과 false일 경우
System.out.println("삭제할 제목의 영화가 없습니다.");
}
}
public static void main(String[] args) {
while(true) {
System.out.println("===========영화 정보 관리===========");
System.out.print("1. 입력/2. 출력/3. 검색/4. 수정/5. 삭제/6. 종료\n메뉴입력>> ");
int n = scan.nextInt(); // 메뉴입력 저장
String a = scan.nextLine(); //개행문자 받아주는 코드
if (n ==6) break; //6번 일 경우 삭제
if (n==1) { //1번 메뉴를 선택했을 경우
menu1();
}
else if(n==2) { //2번 메뉴를 선택했을 경우
menu2();
}
else if (n==3) {//3번 메뉴를 선택했을 경우
menu3();
}
else if (n==4) {//4번 메뉴를 선택했을 경우
menu4();
}
else if (n==5) {//5번 메뉴를 선택했을 경우
menu5();
}
}
scan.close();
}
}
'Programming > JAVA' 카테고리의 다른 글
자바 기말 플젝 코드(미완성) (0) | 2020.12.30 |
---|---|
입출력 스트림과 파일 입출력 (0) | 2020.10.16 |
패키지 개념과 자바 기본 패키지 (0) | 2020.10.16 |
상속 (0) | 2020.10.16 |
클래스와 객체 (0) | 2020.10.16 |
댓글