1. Scanner 클래스로 -1이 입력될 때까지 양의 정수를 입력받아 벡터에 저장하고 벡터를 검색하여 가장 큰 수를 출력하는 프로그램을 작성하라.
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();
	}
}
  1. Scanner 클래스를 사용하여 6개 학점('A', 'B', 'C', 'D', 'F')을 문자로 입력받아 ArrayList에 저장하고, ArrayList를 검색하여 학점을 점수(A=4.0, B=3.0, C=2.0, D=1.0, F=0)로 변환하여 평균을 출력하는 프로그램을 작성하라.
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();
	}
}

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

    (1) 학생마다 Student 객체를 생성하고 4명의 학생 정보를 ArrayList<Student> 컬렉션에 저장한 후에, ArrayList<Student>의 모든 학생(4명) 정보를 출력하고 학생 이름을 입력받아 해당 학생의 학점 평균을 출력하는 프로그램을 작성하라.

    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);
    		}
    	}
    }