[7장 1번]
Scanner 클래스로 -1이 입력될 때까지 양의 정수를 입력받아 벡터에 저장하고 벡터를 검색하여 가장 큰 수를 출력하는 프로그램을 작성하라.
정수(-1이 입력될 때까지)>> 10 6 22 6 88 77 -1
가장 큰 수는 88
[풀이]
import java.util.*;public class VectorBig {public static void printBig(Vector<Integer> v) { // 벡터 v의 정수 중 가장 큰 수 출력int big = v.get(0); // 맨 처음에 있는 수를 제일 큰 수로 초기화for(int i=1; i<v.size(); i++) {if(big < v.get(i)) // 더 큰 수 발견big = v.get(i); // big 변수 교체}System.out.println("가장 큰 수는 " + big);}public static void main(String[] args) {Vector<Integer> v = new Vector<Integer>();Scanner scanner = new Scanner(System.in);System.out.print("정수(-1이 입력될 때까지)>> ");while(true) {int n = scanner.nextInt();if(n == -1) // 입력된 수가 -1이면break;v.add(n);}if(v.size() == 0) {System.out.print("수가 하나도 없음");scanner.close();return;}printBig(v); // 벡터 v의 정수 중 가장 큰 수 출력scanner.close();}}
[7장 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 A B F D
2.3333333333333335
import java.util.ArrayList;import java.util.Scanner;public class Prac02 {public static void main(String[] args) {ArrayList<Character> stack = new ArrayList<Character>();Scanner sc = new Scanner(System.in);System.out.print("6개의 학점을 빈 칸으로 분리 입력(A/B/C/D/F) >> ");for(int i=0; i<6; i++) {char c = sc.next().charAt(0);stack.add(c);}int sum=0;for(int i=0; i<stack.size(); i++) {char c = stack.get(i);switch(c) {case 'A':sum+=4;break;case 'B':sum+=3;break;case 'C':sum+=2;break;case 'D':sum+=1;break;case 'F':sum+=0;break;}}double avr = (double)sum/stack.size();System.out.println(avr);sc.close();}}
[7장 3번]
"그만"이 입력될 때까지 나라 이름과 인구를 입력받아 저장하고, 다시 나라 이름을 입력받아 인구를 출력하는 프로그램을 작성하라. 다음 해시맵을 이용하라.
나라 이름과 인구를 입력하세요.(예: Korea 5000)
나라 이름, 인구 >> Korea 5000
나라 이름, 인구 >> USA 1000000
나라 이름, 인구 >> Swiss 2000
나라 이름, 인구 >> France 3000
나라 이름, 인구 >> 그만
인구 검색 >> France
France의 인구는 3000
인구 검색 >> 스위스
스위스 나라는 없습니다.
인구 검색 >> 그만
[풀이]
import java.util.*;public class HashMapNation {public static void main(String[] args) {HashMap<String, Integer> nations = new HashMap<String, Integer>();Scanner scanner = new Scanner(System.in);System.out.println("나라 이름과 인구를 입력하세요.(예: Korea 5000)");while(true) { // "그만"이 입력될 때까지 반복System.out.print("나라 이름, 인구 >> ");String nation = scanner.next();if(nation.equals("그만"))break; // 입력 끝int population = scanner.nextInt();nations.put(nation, population); // 해시맵 나라이름과 인수 저장}while(true) {System.out.print("인구 검색 >> ");String nation = scanner.next();if(nation.equals("그만"))break;Integer n = nations.get(nation);if(n == null)System.out.println(nation + " 나라는 없습니다.");elseSystem.out.println(nation + "의 인구는 " + n);}scanner.close();}}
[7장 4번]
Vector 컬렉션을 이용하여 강수량의 평균을 유지 관리하는 프로그램을 작성하라. 강수량을 입력하면 벡터에 추가하고 현재 입력된 모든 강수량과 평균을 출력한다.
강수량 입력 (0 입력시 종료) >> 5
5
현재 평균 5
강수량 입력 (0 입력시 종료) >> 80
5 80
현재 평균 42
강수량 입력 (0 입력시 종료) >> 53
5 80 53
현재 평균 46
강수량 입력 (0 입력시 종료) >> 22
5 80 53 22
현재 평균 40
강수량 입력 (0 입력시 종료) >> 0
[풀이]
import java.util.Vector;import java.util.Scanner;public class Prac04 {public static void main(String[] args) {Vector<Integer> stack = new Vector<Integer>();Scanner sc = new Scanner(System.in);while(true) {System.out.print("강수량 입력 (0 입력시 종료) >> ");int num = sc.nextInt();if(num == 0)break;stack.add(num);int avr =0;for(int i=0; i<stack.size(); i++) {System.out.print(stack.get(i)+" ");avr += stack.get(i);}System.out.println();avr /= stack.size();System.out.println("현재 평균 "+avr);}sc.close();}}
[7장 5번]
하나의 학생 정보를 나타내는 Student 클래스에는 이름, 학과, 학번, 학점 평균을 저장하는 필드가 있다.
(1) 학생마다 Student 객체를 생성하고 4명의 학생 정보를 ArrayList<Student> 컬렉션에 저장한 후에, ArrayList<Student>의 모든 학생(4명) 정보를 출력하고 학생 이름을 입력받아 해당 학생의 학점 평균을 출력하는 프로그램을 작성하라.
학생 이름, 학과, 학번, 학점평균 입력하세요.
>> 황기태, 모바일, 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
학생 이름 >> 이재문
이재문, 안드로이드, 2, 3.9
학생 이름 >> 그만
[풀이]
import java.util.ArrayList;import java.util.Scanner;import java.util.StringTokenizer;public class Prac05_1 {public static void main(String[] args) {Student[] student = new Student[4];ArrayList<Student> manage = new ArrayList<Student>();Scanner sc = new Scanner(System.in);System.out.println("학생 이름, 학과, 학번, 학점평균 입력하세요.");for(int i=0; i<student.length; i++) {System.out.print(">> ");String text = sc.nextLine();StringTokenizer st = new StringTokenizer(text, ",");String name = st.nextToken().trim();String department = st.nextToken().trim();String number = st.nextToken().trim();double grade = Double.parseDouble(st.nextToken().trim());student[i] = new Student(name, department, number, grade);manage.add(student[i]); // ArrayList에 저장}for(int i=0; i<manage.size(); i++) {System.out.println("----------------------------------");Student s = manage.get(i);System.out.println("이름: "+s.get_name());System.out.println("학과: "+s.get_department());System.out.println("학번: "+s.get_number());System.out.println("학점평균: "+s.get_grade());}System.out.println("----------------------------------");while(true) {System.out.print("학생 이름 >> ");String name = sc.next();if(name.equals("그만"))break;for(int i=0; i<manage.size(); i++) {Student s = manage.get(i);s.find_student(name);}}sc.close();}}class Student {private String name;private String department;private String number;private double grade;public Student(String name, String department, String number, double grade) {this.name = name;this.department = department;this.number = number;this.grade = grade;}public String get_name() {return name;}public String get_department() {return department;}public String get_number() {return number;}public double get_grade() {return grade;}public void find_student(String name) {if(name.equals(this.name)) {System.out.println(this.name+", "+this.department+", "+this.number+", "+this.grade);}}}
(2) ArrayList<Student> 대신, HashMap<String, Studnet> 해시맵을 이용하여 다시 작성하라. 해시맵에서 키는 학생 이름으로 한다.
[풀이]
import java.util.HashMap;import java.util.Iterator;import java.util.Scanner;import java.util.Set;import java.util.StringTokenizer;public class Prac05_2 {public static void main(String[] args) {Student[] student = new Student[4];HashMap<String, Student> manage = new HashMap<String, Student>();Scanner sc = new Scanner(System.in);System.out.println("학생 이름, 학과, 학번, 학점평균 입력하세요.");for(int i=0; i<student.length; i++) {System.out.print(">> ");String text = sc.nextLine();StringTokenizer st = new StringTokenizer(text, ",");String name = st.nextToken().trim();String department = st.nextToken().trim();String number = st.nextToken().trim();double grade = Double.parseDouble(st.nextToken().trim());student[i] = new Student(name, department, number, grade);manage.put(name,student[i]); // ArrayList에 저장}Set<String> key = manage.keySet();Iterator<String> it = key.iterator();while(it.hasNext()) {String name = it.next();System.out.println("----------------------------------");Student s = manage.get(name);System.out.println("이름: "+s.get_name());System.out.println("학과: "+s.get_department());System.out.println("학번: "+s.get_number());System.out.println("학점평균: "+s.get_grade());}System.out.println("----------------------------------");while(true) {System.out.print("학생 이름 >> ");String name = sc.next();if(name.equals("그만"))break;Student s = manage.get(name);s.find_student(name);}sc.close();}}class Student {private String name;private String department;private String number;private double grade;public Student(String name, String department, String number, double grade) {this.name = name;this.department = department;this.number = number;this.grade = grade;}public String get_name() {return name;}public String get_department() {return department;}public String get_number() {return number;}public double get_grade() {return grade;}public void find_student(String name) {if(name.equals(this.name)) {System.out.println(this.name+", "+this.department+", "+this.number+", "+this.grade);}}}
'Solution_ > 명품 java' 카테고리의 다른 글
[명품 JAVA] 7장 실습문제(5~11) (제네릭과 컬렉션) (7) | 2019.09.22 |
---|---|
[명품 JAVA] 7장 연습문제 (제네릭과 컬렉션) (2) | 2019.05.27 |
[명품 JAVA] 6장 실습문제 (모듈과 패키지 개념, 자바 기본 패키지) (2) | 2019.05.16 |
[명품 JAVA] 6장 연습문제 (모듈과 패키지 개념, 자바 기본 패키지) (0) | 2019.05.15 |
[명품 JAVA] 5장 실습문제(9~14) (상속) (12) | 2019.04.21 |
댓글