프로그래밍 언어/JAVA

<Java>명품 Java programming 7장 1번 ~ 6번

창조적생각 2021. 7. 16. 08:56

1. Scanner 클래스로 -1이 입력될 때까지 양의 정수를 입력받아 벡터에 저장하고 벡터를 검색하면 가장 큰 수를 출력하는 프로그램을 작성하라.

[실행결과]

정수(-1이 입력될 때까지)>>10 6 22 6 88 77 -1

가장 큰수는? 88

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
package practice07_01;
import java.util.Vector;
import java.util.Scanner;
 
public class answer07_01 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int a = 0;
int b = 0;
        Scanner sc = new Scanner(System.in);
        Vector<Integer> v = new Vector<Integer>(); // 벡터 객체 생성
        System.out.print("정수(-1이 입력될 때까지)>>");
        while(a != -1) { //-1이 삽입되면 종료되는 while문
        a = sc.nextInt();
        v.add(a); //한번돌때마다 벡터에 저장됩니다.
            }
      
        for (int i = 0; i < v.size(); i++) {
            if(b < v.elementAt(i)) //벡터 크기만큼 반복하여 가장 큰수가 있으면
                b = v.elementAt(i); // b에 저장합니다.
        }
        System.out.print("가장 큰수는? ");
        System.out.println(b);
        
    }
 
}
 
cs
 
 
 

 

2. Scanner 클래스를 사용하여 6개 학점(A,B,C,D,F)을 문자로 입력받아 ArrayList에 저장하고, ArrayList를 검색하여 학점을 점수(A=4.0, B=3.0, C=2.0, D=1.0, F=0)로 변환하여 평균을 출력하는 프로그램을 작성하라.

[실행결과]

6개의 학점을 빈 칸으로 분리 입력(A/B/C/D/F)A C B F A D

2.3333333333333335

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
package practice07_02;
import java.util.Scanner;
import java.util.*;
public class answer07_02 {
    public static double Switch(String s) {
        switch(s) { //문자를 입력받으면 점수로 바꿔주는 switch 함수를 정의해 줍니다.
        case "A" :
            return 4.0;
        case "B" :
            return 3.0;
        case "C" :
            return 2.0;
        case "D" :
            return 1.0;
        case "F" :
            return 0.0;
        default :
            return 0.0;
        }
    }
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ArrayList<String> score = new ArrayList<String>();
        Scanner sc = new Scanner(System.in);
        String s;
        int sum = 0;
        System.out.print("6개의 학점을 빈 칸으로 분리 입력(A/B/C/D/F)");
        for(int i = 0; i < 6; i++) {
            s = sc.next();
            score.add(s); //score 리스트에 저장합니다.
        }
        
        for(int i = 0; i < 6; i++) {
            sum +=Switch(score.get(i)); //스코어안에 있는 값들을 합해줍니다.
                
            }
        System.out.println(sum/6.0); //평균을 출력합니다.
        }
    }
 
 
cs

3."그만"이 입력될 때까지 나라 이름과 인구를 입력받아 저장하고, 다시 나라 이름을 입력받아 인구를 출력하는 프로그램을 작성하라. 다음 해시맵을 이용하라.

 

**없는 키를 입력했을 때 "없는키 나라는 없습니다."라는 문구가 나오는 것을 아직 넣지 못했습니다. 

 

HashMap<String, Integer> nations = new HashMap<String, Integer>();

[실행결과]

나라 이름과 인구를 입력하세요.(예: Korea 5000)
나라 이름, 인구>> KOREA 5000
나라 이름, 인구>> USA 1000000
나라 이름, 인구>> SWISS 2000
나라 이름, 인구>> FRANCE 3000
나라 이름, 인구>> 그만
나라 이름>> FRANCE
FRANCE의 인구는 3000
나라 이름>> 그만

 

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
package practice07_03;
 
import java.util.HashMap;
import java.util.Scanner;
 
public class answer07_03 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        HashMap<String, Integer> nations = new HashMap<String, Integer>();
        Scanner sc = new Scanner(System.in);
        System.out.println("나라 이름과 인구를 입력하세요.(예: Korea 5000)");
        String name = "";
        int popul = 0;
        while(true) {
            System.out.print("나라 이름, 인구>> ");
            name = sc.next();
            if (name.equals("그만"))
                break;
            popul = sc.nextInt();
            nations.put(name, popul);
        }
        while(true) {
            System.out.print("나라 이름>> ");
            int n = 0;
            String Name =sc.next();
            if (Name.equals("그만"))
                break;
            n = nations.get(Name);
            System.out.println(Name+"의 인구는 "+n);
           
            
        }
    }
 
}
 
cs

4. Vector 컬렉션을 이용하여 강수량의 평균을 유지 관리하는 프로그램을 작성하라. 강수량을 입력하면 벡터에 추가하고 현재 입력된 모든 강수량과 평균을 출력한다.

[실행결과]

강수량 입력(0 입력시 종료)>>5

현재평균5
강수량 입력(0 입력시 종료)>>80
5 80 
현재평균42
강수량 입력(0 입력시 종료)>>53
5 80 53 
현재평균46
강수량 입력(0 입력시 종료)>>22
5 80 53 22 
현재평균40
강수량 입력(0 입력시 종료)>>0

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
package practice07_04;
import java.util.Vector;
import java.util.Scanner;
public class answer07_04 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Vector<Integer> v = new Vector<Integer>();
        Scanner sc = new Scanner(System.in);
        int cnt = 0;
        while(true) {
            cnt++;
            int sum = 0;
            System.out.print("강수량 입력(0 입력시 종료)>>");
            int n = sc.nextInt();
            if(n == 0)
                break;
            v.add(n);
            for(int i = 0; i<v.size();i++) {
            System.out.print(v.get(i)+" ");
            sum += v.get(i);}
            System.out.println();
            System.out.println("현재평균"+(sum/cnt));
            
        }
        
        
        
        
        
        
    }
 
}
 
cs

5. 하나의 학생 정보를 나타내는 Student 클래스에는 이름, 학과, 학번, 학점 평균을 저장하는 필드가 있다.

[실행결과]

학생 이름, 학과, 학번, 학점평균을 입력하세요.
>>황기태, 모바일, 1, 4.1
>>이재문, 안드로이드, 2, 3.9
>>김남윤, 웹공학, 3, 3.5
>>최찬미, 빅데이터, 4, 4.25
-----------------------------
이름 : 황기태
학과 : 모바일
학번 : 1
학점평균 : 4.1
-----------------------------
-----------------------------
이름 : 이재문
학과 : 안드로이드
학번 : 2
학점평균 : 3.9
-----------------------------
-----------------------------
이름 : 김남윤
학과 : 웹공학
학번 : 3
학점평균 : 3.5
-----------------------------
-----------------------------
이름 : 최찬미
학과 : 빅데이터
학번 : 4
학점평균 : 4.25
-----------------------------
학생 이름>>최찬미
최찬미,빅데이터,4,4.25
학생 이름>>그만

 

(1) 학생마다 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
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
62
63
64
65
66
67
68
69
70
71
72
73
package practice07_05;
import java.util.*;
 
class Student{
    private String name, major;
    private String num;
    private String score;
    public Student(String name, String major, String num,String score) {
        this.name = name;
        this.major = major;
        this.num = num;
        this.score = score;
    }
    public String get_name() {
        return name;
    }
    public String get_major() {
        return major;
    }
    public String get_num() {
        return num;
    }
    public String get_score() {
        return score;
    }
    public void find_student(String name) {
        if(name.equals(this.name))
        System.out.println(name+","+major+","+num+","+score);
        
                }
    
}
public class answer07_05 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ArrayList<Student> a = new ArrayList<Student>();
        Scanner scanner = new Scanner(System.in);
        Student[] stu = new Student[4];
        System.out.println("학생 이름, 학과, 학번, 학점평균을 입력하세요.");
        for(int i = 0; i < 4; i++) {
            System.out.print(">>");
            String text = scanner.nextLine();
            StringTokenizer st = new StringTokenizer(text,",");
            String name = st.nextToken().trim();
            String major = st.nextToken().trim();
            String num = st.nextToken().trim();
            String score = st.nextToken().trim();
            stu[i] = new Student(name, major, num,score);
            a.add(stu[i]);
        }
        for(int i = 0; i < 4; i++) {
            System.out.println("-----------------------------");
            System.out.println("이름 : " + stu[i].get_name());
            System.out.println("학과 : " + stu[i].get_major());
            System.out.println("학번 : " + stu[i].get_num());
            System.out.println("학점평균 : "+ stu[i].get_score());
            System.out.println("-----------------------------");
        }
        while(true) {
            System.out.print("학생 이름>>");
            String name = scanner.next();
            if(name.equals("그만"))
                break;
            for (int i = 0;i<4;i++) {
                Student s = a.get(i);
                s.find_student(name);
            }
        }
        
    }
 
}
cs

 

(2) ArrayList<Student> 대신, HashMap<String, Student> 해시맵을 이용하여 다시 작성하라. 해시맵에서 키는 학생이름으로 한다.

**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
package practice07_05;
import java.util.*;
 
public class answer07_05_02 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        HashMap<String,Student> dic = new HashMap<String,Student>();
        Scanner sc = new Scanner(System.in);
        Student[] stu = new Student[4];
        System.out.println("학생 이름, 학과, 학번, 학점평균을 입력하세요.");
        for(int i = 0; i < 4; i++) {
            System.out.print(">>");
            String text = sc.nextLine();
            StringTokenizer st = new StringTokenizer(text,",");
            String name = st.nextToken().trim();
            String major = st.nextToken().trim();
            String num = st.nextToken().trim();
            String score = st.nextToken().trim();
            stu[i] = new Student(name, major, num,score);
            dic.put(name,stu[i]);
        }
        for(int i = 0; i < 4; i++) {
            System.out.println("-----------------------------");
            System.out.println("이름 : " + stu[i].get_name());
            System.out.println("학과 : " + stu[i].get_major());
            System.out.println("학번 : " + stu[i].get_num());
            System.out.println("학점평균 : "+ stu[i].get_score());
            System.out.println("-----------------------------");
        }
        while(true) {
            System.out.print("학생 이름>>");
            String name = sc.next();
            if(name.equals("그만"))
                break;
            Student s = dic.get(name);
            s.find_student(name);
    }
cs

 

6. 도시 이름, 위도, 경도, 정보를 가진 Location 클래스를 작성하고, 도시 이름을 '키'로 하는 HashMap<String, Location> 컬렉션을 만들고, 사용자로부터 입력받아 4개의 도시를 저장하라. 그리고 도시 이름으로 검색하는 프로그램을 작성하라.

[실행결과]

도시,경도,위도를 입력하세요
>>서울, 37, 126
>>LA, 34, -118
>>파리, 2, 48
>>시드니, 151, -33
------------------------
서울 37 126
LA 34 -118
파리 2 48
시드니 151 -33
------------------------
도시이름피리
피리는 없습니다.
도시이름파리
파리 2 48
도시이름그만

 

 

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
62
63
64
65
66
67
68
package practice007_06;
import java.util.*;
 
 
class Location{
    String city, g, w;
    Location(String city, String g, String w){
        this.city = city;
        this.g = g;
        this.w = w;
    }
    public String get_city() {
        return city;
    }
    public String get_g() {
        return g;
    }
    public String get_w() {
        return w;
    }
    public void find_city(String city) {
        if(city.equals(this.city))
        System.out.println(get_city()+" "+get_g()+" "+get_w());
    }
}
public class practice07_06 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        HashMap<String,Location> map= new HashMap<String,Location>();
        Scanner scanner = new Scanner(System.in);
        Location[] loc = new Location[4];
        System.out.println("도시,경도,위도를 입력하세요");
        for(int i = 0; i<4; i++) {
            System.out.print(">>");
            String text = scanner.nextLine();
            StringTokenizer st = new StringTokenizer(text,",");
            String city = st.nextToken().trim();
            String g = st.nextToken().trim();
            String w = st.nextToken().trim();
            loc[i] = new Location(city, g, w);
            map.put(city,loc[i]);
        }
        System.out.println("------------------------");
        for(int i = 0; i<4; i++)
            System.out.println(loc[i].get_city()+" "+loc[i].get_g()+" "+loc[i].get_w());
        
        System.out.println("------------------------");
        String city = null;
        while(true){
            try {
            System.out.print("도시이름");
             city = scanner.next();
            if(city.equals("그만"))
                break;
            Location l = map.get(city);
            l.find_city(city);}
            
        
        catch(java.lang.NullPointerException e) {
            System.out.println(city+"는 없습니다.");
        }
        
        
        
    }
 
}}
cs

 

 

728x90