1. 학생 정보를 나타내는 Student 클래스에는 이름, 학과, 학번, 학점 평균을 저장하는 필드가 있다.
학생마다 Student 객체를 생성하고 4명의 학생 정보를 ArrayList<Student> 컬렉션에 저장한 후,
ArrayList<Student>의 모든 학생(4명) 정보를 출력하고,
학생 이름을 입력받아 해당 학생의 학점 평균을 출력하는 프로그램을 작성하라.
· 참고

· 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
class Student{
private String name, major, sNumber;
private double grade;
Student(String name, String major, String sNumber, double grade){
this.name = name;
this.major = major;
this.sNumber = sNumber;
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
public String getsNumber() {
return sNumber;
}
public void setsNumber(String sNumber) {
this.sNumber = sNumber;
}
public double getGrade() {
return grade;
}
public void setGrade(double grade) {
this.grade = grade;
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
class Studentmain {
final static int STUDENT_NUM = 4;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
try {
ArrayList<Student> infoList = new ArrayList<Student>();
System.out.println("학생 이름, 학과, 학번, 학점평균 입력하세요.");
for(int i = 0; i < STUDENT_NUM; i++) {
System.out.print(">> ");
String text = sc.nextLine();
StringTokenizer st = new StringTokenizer(text, ",");
String name = st.nextToken().trim(); //trim은 중간에 공백이 있다면 삭제해라 라는 의미
String major = st.nextToken().trim();
String sNumber = st.nextToken().trim();
double grade = Double.parseDouble(st.nextToken().trim());
Student student = new Student(name, major, sNumber, grade);
infoList.add(student);
}
Iterator<Student> it = infoList.iterator();
while(it.hasNext()) {
Student student = it.next();
System.out.println("----------------");
System.out.println("이름: " +student.getName());
System.out.println("이름: " +student.getMajor());
System.out.println("이름: " +student.getsNumber());
System.out.println("이름: " +student.getGrade());
System.out.println("----------------");
}
while(true) {
System.out.print("학생 이름 >> ");
String name = sc.nextLine();
if(name.equals("그만"))
break;
for(int i = 0; i < infoList.size(); i++) {
Student student = infoList.get(i);
if(student.getName().trim().equals(name.trim())) {
System.out.print(student.getName() + ", ");
System.out.print(student.getMajor() + ", ");
System.out.print(student.getsNumber() + ", ");
System.out.print(student.getGrade());
break;
}
}
}
}catch(Exception e) {
e.printStackTrace();
System.out.println("프로그램이 에러입니다.");
}
System.out.println("프로그램이 종료 되었습니다.");
sc.close();
}
}
|
cs |
2. 1번 문제에서 ArrayList<Student>를, HashMap<String, Student>으로 이용하여 재작성하라.
단, 해시맵에서 키는 학생 이름으로 한다.
· 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
class Studentmain {
final static int STUDENT_NUM = 4;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
try {
HashMap<String, Student> infoMap = new HashMap<>();
System.out.println("학생 이름, 학과, 학번, 학점평균 입력하세요.");
for(int i = 0; i < STUDENT_NUM; i++) {
System.out.print(">> ");
String text = sc.nextLine();
StringTokenizer st = new StringTokenizer(text, ",");
String name = st.nextToken().trim(); //trim은 중간에 공백이 있다면 삭제해라 라는 의미
String major = st.nextToken().trim();
String sNumber = st.nextToken().trim();
double grade = Double.parseDouble(st.nextToken().trim());
Student student = new Student(name, major, sNumber, grade);
infoMap.put(sNumber, student);
}
Set<String> key = infoMap.keySet();
Iterator<String> it = key.iterator();
while(it.hasNext()) {
String sNum = it.next();
Student student = infoMap.get(sNum);
System.out.println("----------------");
System.out.println("이름: " +student.getName());
System.out.println("이름: " +student.getMajor());
System.out.println("이름: " +student.getsNumber());
System.out.println("이름: " +student.getGrade());
System.out.println("----------------");
}
while(true) {
System.out.print("학생 번호 >> ");
String name = sc.nextLine();
if(name.equals("그만"))
break;
Student student = infoMap.get(name);
if(student == null) {
System.out.println(name + "학생 없습니다.");
}else {
System.out.print(student.getName() + ", ");
System.out.print(student.getMajor() + ", ");
System.out.print(student.getsNumber() + ", ");
System.out.print(student.getGrade());
}
}
}catch(Exception e) {
e.printStackTrace();
System.out.println("프로그램이 에러입니다.");
}
System.out.println("프로그램이 종료 되었습니다.");
sc.close();
}
}
|
cs |
3. "그만"이 입력될 때까지 나라 이름과 인구를 입력받아 저장하고,
다시 나라 이름을 입력받아 인구를 출력하는 프로그램을 작성하라.
· 참고

· 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
class Country {
public static void main(String[] args) {
HashMap<String, Integer> coummap = new HashMap<>();
Scanner sc = new Scanner(System.in);
String key;
System.out.println("나라 이름과 인구를 입력하세요.(예: Korea 5000)");
while(true) {
key = sc.next();
if(key.equals("그만")) {
System.out.println();
break;
}
Integer value = sc.nextInt();
coummap.put(key, value);
}
while(true) {
System.out.print("인구 검색>>");
String word = sc.next();
if(word.equals("그만")) {
System.out.println("프로그램을 종료합니다.");
break;
}else if(coummap.containsKey(word)) {
System.out.println(word + "의 인구는 " + coummap.get(word));
}else
System.out.println(word + " 나라는 없습니다.");
}sc.close();
}
}
|
cs |
4. 도시 이름, 위도, 경도 정보를 가진 Location 클래스를 작성하여라.
도시 이름을 '키'로 하는 HashMap<String, Location> 컬렉션을 만들고, 사용자로부터 입력 받아 4개의 도시를 저장하라.
그리고 도시 이름으로 검색하는 프로그램을 작성하라.
· 참고

· 작성
1
2
3
4
5
6
7
8
9
10
11
12
|
class Location {
private int longitude;
private int latitude;
Location(int longitude, int latitude){
this.longitude = longitude;
this.latitude = latitude;
}
public String toString() {
return longitude + " " + latitude;
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
class Locationmain {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
HashMap<String, Location> map = new HashMap<>();
Location[] loca = new Location[4];
String city = null;
System.out.println("도시, 경도, 위도를 입력하세요.");
for(int i = 0; i < loca.length; i++) {
city = sc.next();
int longitude = sc.nextInt();
int latitude = sc.nextInt();
loca[i] = new Location(longitude, latitude);
map.put(city, loca[i]);
}
Set<String> ks = map.keySet();
while(true) {
System.out.print("도시 이름 >> " );
String str = sc.next();
if(str.equals("그만")) {
System.out.println("종료합니다.");
break;
}
for(String s : ks) {
// System.out.print(map.get(s).toString() + '\t');
if(str.equals(s)) {
System.out.println(s + " " + map.get(s));
break;
}else
continue;
}
}sc.close();
}
}
|
cs |
5. 이름과 학점(4.5만점)을 5개 입력받아 해시맵에 저장하고, 장학생 선발 기준을 입력 받아
장학생 명단을 출력하라. [Hint] HashMap의 전체 요소를 검색하여 학점이 3.2 이상인 학생을 알아내야 한다.
· 참고

· 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
class Student{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
HashMap<String, Double> map = new HashMap<>();
System.out.println("미래장학금관리시스템입니다.");
while(map.size() < 3) {
System.out.print("이름과 학점 >> ");
String name = sc.next();
Double grade = sc.nextDouble();
map.put(name, grade);
}
System.out.print("장학생 선발 학점 기준 입력>> ");
double num = sc.nextDouble();
Set<String> ks = map.keySet();
System.out.print("장학생 명단: ");
for(String e : ks) {
if(map.get(e) >= num) {
System.out.print(e + " ");
}
}
|
cs |
6. 아래의 TreeMap의 Value를 확인 하기 위한 소스를 짜시오. **필수**
· 참고

· 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
class Mapmain {
public static void main(String[] args) {
TreeMap<Integer, String> map = new TreeMap<>();
map.put(45, "Brown");
map.put(37, "James");
map.put(23, "Martin");
Set<Integer> set = map.keySet();
for(Iterator<Integer> itr = set.iterator(); itr.hasNext();) {
// 반복자 사용
System.out.println(map.get(itr.next()));
}
}
}
|
cs |
'bitcamp > JAVA' 카테고리의 다른 글
컬렉션 프레임워크_연습문제1 (0) | 2021.02.06 |
---|---|
컬렉션 프레임워크 (0) | 2021.02.05 |
제네릭_연습문제 (0) | 2021.01.26 |
제네릭 (0) | 2021.01.25 |
자바의 기본 class_연습문제 (0) | 2021.01.25 |