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();
}
}
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();
}
}
하나의 학생 정보를 나타내는 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);
}
}
}