JAVA Basic) 배열 응용 프로그램
Programming/Java 기초

JAVA Basic) 배열 응용 프로그램

728x90

 

목차


     

    <학생 성적 출력 프로그램 구현>

    ArrayList를 사용해 '학생 성적 출력 프로그램'을 구현해보자.
    이 프로그램은 'Student클래스'와 'Subject클래스'를 사용한다.
    Subject클래스는 참조 자료형이므로 ArrayList를 활용해 구현해보자.

    student클래스 구현하기

    어떤 학생이 수강하는 과목들의 성적을 출력하는 것이므로 '학생 객체'가 필요.

    package array;
    import java.util.ArrayList;
    
    public class Student {
    	int studentID;
    	String studentName;
    	ArrayList<Subject> subjectList;
    	// Student클래스의 멤버 변수들
    	
    	public Student(int studentID, String studentName) {
    		this.studentID = studentID;
    		this.studentName = studentName;
    		subjectList = new ArrayList<Subject>();
    	}
    	public void addSubject(String name, int score) {
    		Subject subject = new Subject();	//Subject 클래스 생성하기
    		subject.setName(name);				//과목 이름 추가하기
    		subject.setScorePoint(score);		//점수 추가하기
    		subjectList.add(subject);			//배열에 각각의 subject 인스턴스들 저장하기
    	}	// 수강하는 과목을 subjectList 배열에 하나씩 추가하는 메서드
    		
    	public void ShowStudentInfo() {
    		int total = 0;
    		for(Subject s : subjectList) {
    			total += s.getScorePoint();	//총점 더하기
    			System.out.println(studentName+"의 "+ s.getName() +"과목 성적은 " + s.getScorePoint() + "입니다.");
    		}
    		System.out.println(studentName+"의 총점은 " + total + "입니다.");
    	}
    }

    한 학생이 수강하는 과목은 여러 개가 있을 수 있으므로, 학생이 수강하는 과목을 저장할 배열
    Subject 클래스형으로 ArrayListsubjectList라는 변수명으로 생성. ( ArrayList<Subject> subjectList; )

    그리고 학생의 수강 과목을 하나씩 추가하기 위해 addSubject()메서드를 만든다.
    매개변수로 넘어온 과목 이름과 점수를 가지고 Subject클래스를 생성, 생성한 인스턴스는 subjectList에 추가.
    그러면 이 학생의 수강 과목 정보는 subjectList에 저장이 되는 것.

    showStudentInfo()메서드에서는 각 과목의 성적과 총점을 출력.
    향상된 for문을 사용하여 subjectList 배열의 내용을 출력할 수 있다.

     

    Subject 클래스 구현하기

    과목의 정보를 담고 있는 Subject클래스

    package array;
    
    public class Subject {
    	private String name;
    	private int scorePoint;
    	// Subject클래스의 멤버 변수
    	
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public int getScorePoint() {
    		return scorePoint;
    	}
    	public void setScorePoint(int scorePoint) {
    		this.scorePoint = scorePoint;
    	}
    }

    Subject 클래스의 멤버 변수는 과목 이름성적 두 가지.

    name과 scorePoint 멤버 변수와 이들의 get(),set()메서드로 구성되어 있다.

     

    테스트 클래스 구현하기

    테스트 클래스에서 학생 두 명을 생성하고 각 학생의 과목별 성적과 총점을 출력해보자.

    package array;
    
    public class StudentTest {
    	public static void main(String[] args) {
    		Student studentLee = new Student(1001, "Lee");
    		studentLee.addSubject("국어", 100);
    		studentLee.addSubject("수학", 50);
    		
    		Student studentKim = new Student(1002, "Kim");
    		studentKim.addSubject("국어", 70);
    		studentKim.addSubject("수학", 85);
    		studentKim.addSubject("영어", 100);
    		
    		studentLee.ShowStudentInfo();
    		System.out.println("=====");
    		studentKim.ShowStudentInfo();
    	}
    }

    studentLee를 생성하고 ID와 이름을 기입.
    studentLee의 addSubject()메서드를 호출하여 학생 Lee가 수강중인 과목들(국,수)을 studentLee의 subjectList에 추가.
    studentKim도 마찬가지고.

    그리고 showStudentInfo()메서드를 호출하여 각 학생의 과목별 성적과 총점을 출력한다.

     

    run:


    <연습 문제>

    Q1.

    배열은 [같은] 자료형을 순서대로 관리할 때 사용하는 자료 구조입니다.

     

    Q2.

    알파벳 출력 예제에서 각 배열 요소 값을 대문자에서 소문자로 변환해보자.

     

    Q3.

    배열 길이가 5인 정수형 배열을 선언하고, 1~10중 짝수만을 배열에 저장한 후 그 합을 출력해보자.

    package prac;
    
    public class Q3 {
    	public static void main(String[] args) {
    		int[] q3 = {2,4,6,8,10};
    		
    		int total = 0;
    		
    		for(int i = 0; i < q3.length; i++) {
    			total += q3[i]; 
    			System.out.println(q3[i]);			
    		}
    		System.out.println("모든 요소의 합은 "+total+"입니다.");
    	}
    }

    run:

     

     

     

     

    Q4.

    다음과 같이 Dog클래스가 있다. DogTest클래스와 배열 길이가 5인 Dog[]배열을 만든 후 Dog인스턴스를 5개 생성하여 배열에 추가. for문과 향상된 for문에서 Dog클래스의 showDogInfo()메서드를 사용하여 배열에 추가한 Dog 정보를 모두 출력하시오.

    Dog클래스 : 

    public class Dog {
    	private String name;
    	private String type;
    	
    	public Dog(String name, String type) {
    		this.name = name;
    		this.type = type;
    	}
    	
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getType() {
    		return type;
    	}
    	public void setType(String type) {
    		this.type = type;
    	}
    	public String showDogInfo() {
    		return name + ", " + type;
    	}
    }

    DogTest 클래스:

    public class DogTest {
    
    	public static void main(String[] args) {
    		Dog[] dog = new Dog[5];
    		
    		dog[0] = new Dog("불독","사나움");
    		dog[1] = new Dog("불독1","사나움1");
    		dog[2] = new Dog("불독2","사나움2");
    		dog[3] = new Dog("불독3","사나움3");
    		dog[4] = new Dog("불독4","사나움4");
    		
    		for(int i = 0; i < dog.length; i++) {
    			System.out.println(dog[i].showDogInfo());
    		}
    		
    		System.out.println("=====향for======");
    		for(Dog dog1 : dog) {
    			System.out.println(dog1.showDogInfo());
    		}
    	}
    }

    run:

     

     

     

     

     

     

    Q5.

    Q4에서 DogTestArrayList 클래스를 만들어 멤버 변수로 ArrayList를 사용. Dog인스턴스를 5개 생성하여 ArrayList에 추가하고 ArrayList의 정보를 출력하는 코드를 작성.

    import java.util.ArrayList;
    
    public class DogTestArrayList {
    	public static void main(String[] args) {
    		
    		ArrayList<Dog> list = new ArrayList<>();
    		list.add(new Dog("치와와1","깨방정1")); 
    		list.add(new Dog("치와와2","깨방정2")); 
    		list.add(new Dog("치와와3","깨방정3")); 
    		list.add(new Dog("치와와4","깨방정4")); 
    		list.add(new Dog("치와와5","깨방정5")); 
    		
    		for(Dog dog1 : list) {
    			System.out.println(dog1.showDogInfo());
    		}
    	}
    }

    run:

     

     

     

     


    [Do it! 자바 프로그래밍 입문] 도서로 공부하며 정리한 글입니다.

    300x250