21-2: JAVA ListIterator&ArrayList

jk·2024년 1월 29일
0

kdt 풀스택

목록 보기
40/127



1. 아래의 소스코드를 설명하시오.

    List<String> list = Arrays.asList("Toy", "Box", "Robot", "Box");
        list = new ArrayList<>(list);
//       
        ListIterator<String> litr = list.listIterator();
        String str; 
//
        // 왼쪽에서 오른쪽으로 
        while(litr.hasNext()) {
            str = litr.next();
            System.out.print(str + '\t');
//
            if(str.equals("Toy"))
                litr.add("Toy2");
        }
        System.out.println();
//        
        // 오른쪽에서 왼쪽으로
//
        while(litr.hasPrevious()) {
            str = litr.previous();
            System.out.print(str + '\t');
//
            if(str.equals("Robot"))
                litr.add("Robot2");
        }
        System.out.println();
//
        // 다시 왼쪽에서 오른쪽으로
        for(Iterator<String> itr = list.iterator(); itr.hasNext(); )
            System.out.print(itr.next() + '\t');
        System.out.println();
  • This code unboxed String from left to right. And from right to left. And from left to right again.
  • In left to right, ListIterator doesnt count added element. But it does count add element from right to left.



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

(1) 학생마다 Student 객체를 생성하고 4명의 학생 정보를 ArrayList 컬렉션에 저장한 후에, ArrayList의 모든 학생(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
​
​
​
학생 이름 >> 그만
//
//code
//
import java.util.*;
class Const {
    static final int STUDENT_HOW_MANY = 4;
}
class Print {
    private static StringBuilder print = new StringBuilder();
    private static void printAndReset() {
        System.out.print(print);
        print.setLength(0);
    }
    static void printString(String str) {
        print.append(str);
        printAndReset();
    }
    static void printInt(int i) {
        print.append(i);
        printAndReset();
    }
    static void printDouble(double d) {
        print.append(d);
        printAndReset();
    }
}
class Functions {
    private static Scanner scanner = new Scanner(System.in, "Cp949");
    private static List<Student> list = new ArrayList<Student>();
    static void run() {
        while(true) {
            try {
                getStudentFromScanner();
                scanner.close();
                break;
            } catch(Exception e) {
                e.printStackTrace();
                scanner = new Scanner(System.in, "Cp949");
            };
        };
    }
    private static void getStudentFromScanner() {
        Print.printString("학생 이름, 학과, 학번, 학점평균 입력하세요.\n");
        while(true) {
            Print.printString("\n\n\n");
            String input = scanner.nextLine();
            String[] studentInfo = input.split(", ");
            if (studentInfo.length == 4) {
                String name = studentInfo[0];
                String major = studentInfo[1];
                int idNum = Integer.valueOf(studentInfo[2]);
                double creditAverage = Double.valueOf(studentInfo[3]);
                Student student = new Student(name, major, idNum, creditAverage);
                list.add(student);
                if (list.size() == Const.STUDENT_HOW_MANY) {
                    break;
                };
            };
        };
        for (Student s : list) {
            Print.printString("\n\n\n----------------------------------\n\n\n\n이름: ");
            Print.printString(s.getName());
            Print.printString("\n\n\n\n학과: ");
            Print.printString(s.getMajor());
            Print.printString("\n\n\n\n학번: ");
            Print.printInt(s.getIdNum());
            Print.printString("\n\n\n\n학점평균: ");
            Print.printDouble(s.getCreditAverage());
            Print.printString("\n");
        };
        Print.printString("\n\n\n----------------------------------");
        while(true) {
            Print.printString("\n\n\n\n학생 이름 ");
            String input = scanner.next();
            if (input.equals("그만")) {
                break;
            };
            for(Student s : list) {
                if(input.equals(s.getName())) {
                    Print.printString("\n\n\n");
                    Print.printString(s.getName());
                    Print.printString(", ");
                    Print.printString(s.getMajor());
                    Print.printString(", ");
                    Print.printInt(s.getIdNum());
                    Print.printString(", ");
                    Print.printDouble(s.getCreditAverage());
                    break;
                };
            };
        };
    }
}
class Student {
    private String name;
    private String major;
    private int idNum;
    private double creditAverage;
    Student(String name, String major, int idNum, double creditAverage) {
        this.name = name;
        this.major = major;
        this.idNum = idNum;
        this.creditAverage = creditAverage;
    }
    String getName() {
        return this.name;
    }
    String getMajor() {
        return this.major;
    }
    int getIdNum() {
        return this.idNum;
    }
    double getCreditAverage() {
        return this.creditAverage;
    }
}
class StudentFromScanner {
    public static void main(String[] args) {
        Functions.run();
    }
}
//
//print
//
학생 이름, 학과, 학번, 학점평균 입력하세요.
​
​
​
황기태, 모바일, 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
​
​
​
학생 이름 그만
profile
Brave but clumsy

0개의 댓글