1~100사이의 난수를 50개 발생한다. 발생한 난수 중에서 짝수만 골라서 출력도 하고, 짝수의 합만 구하여 출력하는 프로그램을 작성
package collection;
import java.util.HashMap;
import java.util.Map;
public class MapMain {
public MapMain() {
Map<String, String> map = new HashMap<String, String>();
map.put("book101", "백설공주");
map.put("book201", "인어공주");
map.put("book101", "백설공주"); // Value의 값은 중복이 허용된다.
map.put("book301", "피오나");
map.put("book101", "엄지공주"); // Key도 중복 허용
System.out.println(map.get("book101"));
System.out.println(map.get("book102"));
System.out.println(map.get("book501")); // error가 아닌 null 값을 가져온다.
}
public static void main(String[] args) {
new MapMain();
}
}
package collection;
import java.util.Iterator;
import java.util.Vector;
public class VectorMain {
public VectorMain() {
Vector<String> v = new Vector<String>();
System.out.println("벡터 크기 = " + v.size());
// vector 안에 들어 있는 항목의 갯수 , 아직 들어온게 없으니 0
System.out.println("벡터 용량 = " + v.capacity());
// 담을 수 있는 용량, 기본 10개
System.out.println();
System.out.println("항목 추가");
for(int i=1; i<=10; i++) {
v.add(i+""); // 숫자를 문자열로 -> 결합 (+"")
}//for
for(int i=0; i<10; i++) {
System.out.print(v.get(i) + " ");
}
System.out.println();
System.out.println("벡터 크기 = " + v.size());
System.out.println("벡터 용량 = " + v.capacity());
System.out.println();
System.out.println("항목 1개 추가");
v.add("5"); // 중복 허용
for(int i=0; i<v.size(); i++) {
System.out.print(v.get(i) + " ");
}
System.out.println();
System.out.println("벡터 크기 = " + v.size());
System.out.println("벡터 용량 = " + v.capacity());
System.out.println("마지막 항목 삭제");
v.remove(10); // 인데스 위치인 10을 작성
Iterator<String> it = v.iterator();
while(it.hasNext()) {
System.out.print(it.next()+" ");
}
System.out.println();
}
public static void main(String[] args) {
new VectorMain();
}
}
객체를 정렬하는데 필요한 메소드가 정의되어 있다.
비교대상자가 더 크면(<) -1, 같다면(==) 0, 작으면(>) 1을 반환시켜줍니다.
-> 이 값을 비교하여 정렬을 할 수 있다.
일반적인 int, char, double 같은 타입의 배열이라면 다음 함수들을 이용
Collections(또는 Arrays).sort()
: 정렬
Collectoins(또는 Arrays).reverse()
: 뒤집기
implements Comparable<Integer>
public int compare(T o1, T o2)
public boolean equals(Object obj)
Collections.sort()
객체 정렬
package collection;
public class PersonDTO implements Comparable<PersonDTO>{ // 1인분 클래스
// implements Comparable<T> - 객체 대 객체 끼리 비교 시켜줌.
private String name;
private int age;
public PersonDTO() {} // 기본 생성자
public PersonDTO(String name, int age) {
super();
this.name = name;
this.age = age;
}
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;
}
@Override
//PersonDTO에서주소가 나오게 하는게 아닌 결과 값을 바뀐 값으로 하기 위해 오버라이딩
public String toString() {
return name + "\t" + age;
}
@Override
public int compareTo(PersonDTO p) {
// 나이로 오름차순
// if(this.age < p.age) return -1;
// else if(this.age> p.age ) return 1;
// return 0;
// 나이로 내림차순
if(this.age < p.age) return 1;
else if(this.age> p.age ) return -1;
else return 0;
}
}
--------------------------------------------------------
package collection;
import java.util.Arrays;
public class PersonSort {
public static void main(String[] args) {
String[] ar = {"orange", "apple", "banna", "pear", "peach", "applemango"};
System.out.print("정렬 전 = ");
for(String data : ar) {
System.out.print(data+" ");
}
System.out.println();
Arrays.sort(ar); // 배열에 관련된 모든 메소드를 가진 클래스 - sort는 static으로 선언되어 있다.
System.out.print("정렬 후 = ");
for(String data : ar) {
System.out.print(data+" ");
}
System.out.println();
}
}
package sungJuk;
public class SungJukMain {
public static void main(String[] args) {
SungJukService sungjukservice = new SungJukService();
sungjukservice.menu();
System.out.println("성적 프로그램을 종료합니다.");
}
}
------------------------------------------------------------
package sungJuk;
import java.util.ArrayList;
public interface SungJuk {
public void execute(ArrayList<SungJukDTO> arrayList);
}
------------------------------------------------------------
package sungJuk; // 1인분
public class SungJukDTO {
private int no;
private String name;
private int kor;
private int eng;
private int math;
private int tot;
private double avg;
public void calc() {
tot = kor + eng + math;
setAvg(tot/3);
}
public SungJukDTO(int no, String name, int kor, int eng, int math) {
this.no = no;
this.name = name;
this.kor = kor;
this.eng = eng;
this.math = math;
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getKor() {
return kor;
}
public void setKor(int kor) {
this.kor = kor;
}
public int getEng() {
return eng;
}
public void setEng(int eng) {
this.eng = eng;
}
public int getMath() {
return math;
}
public void setMath(int math) {
this.math = math;
}
public double getAvg() {
return avg;
}
public int getTot() {
return tot;
}
public void setTot(int tot) {
this.tot = tot;
}
public void setAvg(double avg) {
this.avg = avg;
}
@Override
public String toString() {
return ""+no+ "\t" +
name + "\t" +
kor + "\t" +
eng + "\t" +
math + "\t" +
tot + "\t" +
avg;
}
}
------------------------------------------------------------
package sungJuk;
import java.util.ArrayList;
import java.util.Scanner;
public class SungJukService {
private ArrayList<SungJukDTO> arrayList = new ArrayList<SungJukDTO>();
Scanner scan = new Scanner(System.in);
public void menu() {
SungJuk sungjuk = null;
int num;
while(true) {
System.out.println();
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("6. 종료");
System.out.println("*************");
System.out.print ("메뉴 번호 선택: ");
num = scan.nextInt();
if(num==6) {
System.out.println("종료합니다.");
break;
}
if(num==1) {
sungjuk = new SungJukInsert();
sungjuk.execute(arrayList);
}else if(num==2) {
sungjuk = new SungJukList();
sungjuk.execute(arrayList);
}else if(num==3) {
sungjuk = new SungJukUpdate();
sungjuk.execute(arrayList);
}else if(num==4) {
sungjuk = new SungJukDelete();
sungjuk.execute(arrayList);
}else if(num==5) {
sungjuk = new SungJukSort();
sungjuk.execute(arrayList);
}else {
System.out.println("1 ~ 6 까지만 번호를 허용합니다.");
}
}//while
}//menu()
}
------------------------------------------------------------
package sungJuk;
import java.util.ArrayList;
import java.util.Scanner;
public class SungJukInsert implements SungJuk{
@Override
public void execute(ArrayList<SungJukDTO> arrayList) {
Scanner scan = new Scanner(System.in);
System.out.println("*************");
System.out.print("1. 번호 입력 : ");
int no = scan.nextInt();
System.out.print("2. 이름 입력 : ");
String name = scan.next();
System.out.print("3. 국어 입력 : ");
int kor = scan.nextInt();
System.out.print("4. 영어 입력 : ");
int eng = scan.nextInt();
System.out.print("5. 수학 입력 : ");
int math =scan.nextInt();
System.out.println("6. 등록 완료 ");
System.out.println("*************");
SungJukDTO sungjukDTO = new SungJukDTO(no, name, kor, eng, math);
sungjukDTO.calc();
arrayList.add(sungjukDTO);
}
}
------------------------------------------------------------
package sungJuk;
import java.util.ArrayList;
public class SungJukList implements SungJuk{
@Override
public void execute(ArrayList<SungJukDTO> arrayList) {
System.out.println();
System.out.println("번호\t이름\t국어\t영어\t수학\t총점\t평균");
for (SungJukDTO sj : arrayList) {
System.out.printf("%d\t%s\t%d\t%d\t%d\t%d\t%.2f\n",
sj.getNo(), sj.getName(), sj.getKor(), sj.getEng(),
sj.getMath(), sj.getTot(), sj.getAvg());
}
}
}
------------------------------------------------------------
/*
- 없는 번호가 입력되면 "잘못된 번호 입니다." 라고 출력한다.
- 있는 번호가 입력되면 번호에 해당하는 데이틀 출력 후 수정한다.
번호 입력 : 78
잘못된 번호 입니다.
또는
번호 입력 : 10
번호 이름 국어 영어 수학 총점 평균
10 홍길동
수정 할 이름 입력 :
수정 할 국어 입력 :
수정 할 영어 입력 :
수정 할 수학 입력 :
수정하였습니다.
*/
package sungJuk;
import java.util.ArrayList;
import java.util.Scanner;
public class SungJukUpdate implements SungJuk{
@Override
public void execute(ArrayList<SungJukDTO> arrayList) {
Scanner scan = new Scanner(System.in);
System.out.println("*************");
System.out.print ("수정할 번호 입력 : ");
int no = scan.nextInt();
boolean soojung = false;
for (SungJukDTO sj : arrayList){
if(sj.getNo() == no) {
System.out.println();
System.out.println("번호\t이름\t국어\t영어\t수학\t총점\t평균");
System.out.println(sj.toString());
System.out.print("수정 할 이름 입력 : ");
String name = scan.next();
System.out.print("수정 할 국어 입력 : ");
int kor = scan.nextInt();
System.out.print("수정 할 영어 입력 : ");
int eng = scan.nextInt();
System.out.print("수정 할 수학 입력 : ");
int math = scan.nextInt();
sj.setName(name);
sj.setKor(kor);
sj.setEng(eng);
sj.setMath(math);
sj.calc();
System.out.println("수정 완료 하였습니다.");
soojung = true;
break;
}
}
if(!soojung) {
System.out.println("잘못된 번호 입니다.");
}
}
}
------------------------------------------------------------
/*
- 이름을 입력하여 없는 이름이면 "회원의 정보가 없습니다" 출력하시오
- 똑같은 이름이 있으면 모두 삭제한다.
삭제할 이름 입력 : 천사
회원의 정보가 없습니다
또는
삭제할 이름 입력 : 홍길동 (홍길동이라는 이름 가진 SungJukDTO를 모두 제거)
삭제하였습니다.
*/
package sungJuk;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class SungJukDelete implements SungJuk{
@Override
public void execute(ArrayList<SungJukDTO> arrayList) {
Scanner scan = new Scanner(System.in);
System.out.println("*************");
System.out.print ("삭제할 이름 입력 : ");
String name = scan.next();
boolean delt = false;
Iterator<SungJukDTO> iterator = arrayList.iterator();
while (iterator.hasNext()) {
SungJukDTO sj = iterator.next();
if(sj.getName().equals(name)) {
iterator.remove();
delt = true;
}
}
if (delt) {
System.out.println("삭제하였습니다.");
}else {
System.out.println("회원의 정보가 없습니다.");
}
}
}
------------------------------------------------------------
/*
- menu() 만들어서 작성하시오
********************
1. 총점으로 내림차순
2. 이름으로 오름차순
3. 이전 메뉴
********************
번호 :
*/
package sungJuk;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
public class SungJukSort implements SungJuk{
@Override
public void execute(ArrayList<SungJukDTO> arrayList) {
Scanner scan = new Scanner(System.in);
while(true) {
System.out.println("*************");
System.out.println(" 1. 총점으로 내림차순 : ");
System.out.println(" 2. 이름으로 오름차순 : ");
System.out.println(" 3. 이전 메뉴 ");
System.out.println("*************");
System.out.print("번호 : ");
int num = scan.nextInt();
if(num == 3) {
System.out.println("이전 메뉴로 돌아갑니다.");
break;
}
if(num == 1) {
System.out.println();
System.out.println("총점순으로 내림차순으로 정렬합니다.");
Collections.sort(arrayList, new Comparator<SungJukDTO>() {
@Override
public int compare(SungJukDTO sj1, SungJukDTO sj2) {
return sj2.getTot() - sj1.getTot();
}
});
System.out.println();
System.out.println("아래와 같이 정렬됩니다.");
System.out.println();
System.out.println("번호\t이름\t국어\t영어\t수학\t총점\t평균");
for (SungJukDTO sj : arrayList) {
System.out.printf("%d\t%s\t%d\t%d\t%d\t%d\t%.2f\n",
sj.getNo(), sj.getName(), sj.getKor(), sj.getEng(),
sj.getMath(), sj.getTot(), sj.getAvg());
}
}else if(num == 2) {
System.out.println("이름순으로 오름차순 정렬합니다.");
Collections.sort(arrayList, new Comparator<SungJukDTO>() {
@Override
public int compare(SungJukDTO sj1, SungJukDTO sj2) {
return sj1.getName().compareTo(sj2.getName());
}
});
System.out.println();
System.out.println("아래와 같이 정렬됩니다.");
System.out.println();
System.out.println("번호\t이름\t국어\t영어\t수학\t총점\t평균");
for (SungJukDTO sj : arrayList) {
System.out.printf("%d\t%s\t%d\t%d\t%d\t%d\t%.2f\n",
sj.getNo(), sj.getName(), sj.getKor(), sj.getEng(),
sj.getMath(), sj.getTot(), sj.getAvg());
}
}else {
System.out.println("1 ~ 3 번까지만 입력해 주세요.");
}
}
}
}