본문 바로가기
JavaTest

ncs.test

by nyamnmm 2024. 7. 18.
JavaTest3
ncs.test

 

 

Package명 클래스명 메소드 설명
ncs.test00 문제 참조 +main(String args[]): void main 함수 안에서 모든 코드 작업 진행

 

 

문제1
2차원 배열에 들어있는 데이터들의 합계와 평균을 구한다.
합계와 평균 값은 double로 처리하고, 소수점 아래 둘째자리까지 출력되게 한다.

<사용 데이터>
int [][] array = {{12, 41, 36, 56, 21}, {82, 10, 12, 61, 45}, {14, 16, 18, 78, 65}, {45, 26, 72, 23, 34}};
package ncs.test01;

public class ArrayTest {
        public static void main(String[] args) {
            int [][] array = {
                    {12, 41, 36, 56, 21},
                    {82, 10, 12, 61, 45},
                    {14, 16, 18, 78, 65},
                    {45, 26, 72, 23, 34}
                    };
		
            double sum = 0;
            double count = 0;
		
            for(int i = 0; i < array.length; i++) {
                for(int j = 0; j < array[i].length; j++) {
                    sum += array[i][j];
                    count++;
                }
            }
		
            System.out.printf("합계 : %.2f \n", sum);
            System.out.printf("평균 : %.2f \n", (sum / count));
        }
}

 

 


 

문제2
주어진 String 데이터를 ","로 나누어 5개의 실수 데이터들을 꺼내어 합과 평균을 구한다.
단, String 문자열의 모든 실수 데이터를 배열로 만들어 계산한다.
합계와 평균은 모두 소수점 3자리까지만 표현한다.

<사용 데이터>
String str = "1.22,4.12,5.93,8.71,9.34";
package ncs.test02;

public class StringTest {
        public static void main(String[] args) {
            String str = "1.22,4.12,5.93,8.71,9.34";
            String[] strArr = str.split(",");
            double sum = 0, count = 0;
		
            for(int i = 0; i < strArr.length; i++) {
                // 문자열String을 실수double로 바꾸는 함수 : Double.parseDouble(String);
                 sum += Double.parseDouble(strArr[i]);
                count++;
            }
		
            System.out.printf("합계 : %.3f \n", sum);
            System.out.printf("평균 : %.3f \n", (sum / count));
        }
}

 


 

문제4
Product 클래스를 작성하고, 키보드로 각 필드에 기록할 값을 입력받아 객체 초기화에 사용한다.
가격과 수량을 계산하여 구매 가격을 출력한다.
getXXX()/setXXX()는 만들어서 사용한다.
infomaton() 메소드로 상품정보를 출력 처리하고, 총 구매가격은 getter를 사용하여 계산한다.
package ncs.test04;

public class Product {
	// 매개변수
	private String name;
	private int price;
	private int quantity;
	
	// 생성자
	public Product() {}
	
	public Product(String name, int price, int quantity) {
		this.name = name;
		this.price = price;
		this.quantity = quantity;
	}
	
	// 메소드
	public String information() {
		return "상품명 : " + this.name
				+ "\n가격 : " + this.price
				+ "원\n수량 : " + this.quantity
				+"개\n총 구매 가격 : " + getTotal() + "원"; 
	}
	
	// getter()
	public String getName() {
		return this.name;
	}
	
	public int getPrice() {
		return this.price;
	}
	
	public int getQuantity() {
		return this.quantity;
	}
	
	public int getTotal() {
		return (this.price * this.quantity);
	}
	
	// setter()
	public void setName(String name) {
		this.name = name;
	}
	
	public void setPrice(int price) {
		this.price = price;
	}
	
	public void setQuantity(int quantity) {
		this.quantity = quantity;
	}
}
package ncs.test04;

import java.util.Scanner;

public class ProductTest {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("===== 상품 정보 등록 =====");
		
		System.out.print("상품명 : ");
		String name = sc.nextLine();
		
		System.out.print("가격 : ");
		int price = sc.nextInt();
		
		System.out.print("수량 : ");
		int quantity = sc.nextInt();
		
		System.out.println();
		sc.close();
		
		Product prd = new Product(name, price, quantity);
		System.out.println("===== 상품 정보 출력 =====");
		System.out.println(prd.information());
	}
}

 


 

문제5
3개의 Book 객체를 배열로 생성하여 각각의 정보와 할인된 가격을 출력한다.
배열에 있는 객체 정보는 모두 getter로 출력한다. (for문 이용)

<사용 데이터>
title author price(원) publisher discountRate
자바의 정석 남궁성 30000 도우출판 0.1
열혈강의 자바 구정은 29000 프리렉 0.1
객체지향 JAVA8 금영욱 30000 북스홈 0.1

 

package ncs.test05;

public class Book {
	// 매개변수
	private String title;
	private String author;
	private int price;
	private String publisher;
	private double discountRate;
	
	// 생성자
	public Book() {}
	
	public Book(String title, String author, int price, String pub, double rate) {
		this.title = title;
		this.author = author;
		this.price = price;
		this.publisher = pub;
		this.discountRate = rate;
	}
	
	// getter
	public String getTitle() {
		return this.title;
	}
	
	public String getAuthor() {
		return this.author;
	}
	
	public int getPrice() {
		return this.price;
	}
	
	public String getPublisher() {
		return this.publisher;
	}
	
	public double getDiscountRate() {
		return this.discountRate;
	}
	
	public int getTotal() {
		return (int)(this.price - this.price * this.discountRate);
	}
	
	// setter
	public void setTitle(String title) {
		this.title = title;
	}
	
	public void setAuthor(String author) {
		this.author = author;
	}
	
	public void setPrice(int price) {
		this.price = price;
	}
	
	public void setPublisher(String publisher) {
		this.publisher = publisher;
	}
	
	public void setDiscountRate(double discountRate) {
		this.discountRate = discountRate;
	}
}
package ncs.test05;

public class BookArrayTest {
	public static void main(String[] args) {
		Book bArray[] = new Book[3];
		bArray[0] = new Book("자바의 정석", "남궁성", 30000, "도우출판", 0.1);
		bArray[1] = new Book("열혈강의 자바", "구정은", 29000, "프리렉", 0.1);
		bArray[2] = new Book("객체지향 JAVA8", "금영욱", 30000, "북스홈", 0.1);
		
		for(int i = 0; i < bArray.length; i++) {
			System.out.print(bArray[i].getTitle() + ", ");
			System.out.print(bArray[i].getAuthor() + ", ");
			System.out.print(bArray[i].getPublisher() + ", ");
			System.out.print(bArray[i].getPrice() + "원, ");
			System.out.print((int)(bArray[i].getDiscountRate() * 100) + "% 할인\n");
			System.out.println("할인된 가격 : " + bArray[i].getTotal() + "원\n");
		}
	}
}

 


 

문제6
2부터 5까지의 정수형 데이터만을 키보드로 입력 받아 1부터 받은 수까지의 합을 출력한다.
단, 입력 받은 수가 2부터 5까지의 범위를 벋어나면 InvalidException을 발생시켜 "입력 값에 오류가 있습니다" 라고 출력하고 프로그램을 종료한다.
package ncs.test06;

public class Calculator {
	private InvalidException iE = new InvalidException();
	
	public double getSum(int data) {
		double sum = 0;
		for(int i = 0; i <= data; i++) {
			sum += i;
		}
		
		if(data >= 2 && data <= 5) {
			System.out.println("결과값 : " + sum);
		}
		else {
			System.out.println(iE.InvalidException());
		}
		
		return sum;
	}
}
package ncs.test06;

public class InvalidException {
	public String InvalidException() {
		String message = "입력 값에 오류가 있습니다.";
		return message;
	}
}
package ncs.test06;

import java.util.Scanner;

public class ExceptionTest {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		Calculator c = new Calculator();
		InvalidException iE = new InvalidException();
		
		System.out.print("정수 입력 (2 ~ 5) : ");
		int data = sc.nextInt();
		c.getSum(data);
		
		sc.close();
	}
}

 


 

문제7
Human이라는 부모 클래스를 상속 받은 Student 클래스를 이용하여 프로그램을 작성한다.
3개의 Student 객체를 생성하여 배열에 셋팅한 후 각 객체의 모든 정보를 출력한다. (for문 사용)

<사용 데이터>
name age height weight number major
홍길순 25 171 81 201401 영어영문학
핚사랑 23 183 72 201402 건축학
임꺽정 26 175 65 201403 체육학
package ncs.test07;

public class Human {
	// 매개변수
	private String name;
	private int age;
	private int height;
	private int weight;
	
	// 생성자
	public Human() {}
	
	public Human(String name, int age, int height, int weight) {
		this.name = name;
		this.age = age;
		this.height = height;
		this.weight = weight;
	}
	
	// 메소드
	@Override
	public String toString() {
		return name + "\t" + age + "\t" + height + "\t" + weight + "\t";
	}
	
	// getter
	public String getName() {
		return this.name;
	}
	
	public int getAge() {
		return this.age;
	}
	
	public int getHeight() {
		return this.height;
	}
	
	public int getWeight() {
		return this.weight;
	}
	
	// setter
	public void setName(String name) {
		this.name = name;
	}
	
	public void setAge(int age) {
		this.age = age;
	}
	
	public void setHeight(int height) {
		this.height = height;
	}
	
	public void setWeight(int weight) {
		this.weight = weight;
	}
}
package ncs.test07;

public class Student extends Human {
	// 매개변수
	private String number;
	private String major;

	// 생성자
	public Student() {}
	
	public Student(String name, int age, int height, int weight, String number, String major) {
		super(name, age, height, weight);
		this.number = number;
		this.major = major;
	}
	
	// 메소드
	@Override
	public String toString() {
		return super.toString() + number + "\t" + major;
	}
	
	// getter
	public String getNumber() {
		return this.number;
	}
	
	public String getMajor() {
		return this.major;
	}
	
	// setter
	public void setNumber(String number) {
		this.number = number;
	}
	
	public void setMajor(String major) {
		this.major = major;
	}
}
package ncs.test07;

public class StudentTest {
	public static void main(String[] args) {
		Student[] stArr = new Student[3];
		stArr[0] = new Student("홍길순", 25, 171, 81, "201401", "영어영문학");
		stArr[1] = new Student("한사랑", 23, 183, 72, "201402", "건축학");
		stArr[2] = new Student("임꺽정", 26, 175, 65, "201403", "체육학");
		
		for(int i = 0; i < stArr.length; i++) {
			System.out.println(stArr[i].toString());
		}
	}
}

 


 

문제8
상속받은 Object 클래스의 메소드를 오버라이딩하여 프로그램을 작성한다.
1. 3개의 User 객체를 생성하여 배열에 셋팅한 후 각 객체의 모든 정보를 처리 출력한다. (for문 사용)
2. users가 참조하는 객체들의 복사본을 만든다. (for문 사용)
3. 복사본의 객체 정보를 모두 출력한다.
4. users와 copyUsers의 각 index별 객체의 값들이 일치하는지 확인 출력한다.

<사용 데이터>
id password name age gender phone
user01 pass01 김철수 32 M 010-1234-5678
user02 pass02 이영희 25 F 010-5555-7777
user03 pass03 황진이 20 F 010-9874-5632
package ncs.test08;

public class User {
	// 매개변수
	String id;
	String password;
	String name;
	int age;
	char gender;
	String phone;
	
	// 생성자
	public User() {}
	
	public User(String id, String password, String name, int age, char gender, String phone) {
		this.id = id;
		this.password = password;
		this.name = name;
		this.age = age;
		this.gender = gender;
		this.phone = phone;
	}
	
	// 메소드
	@Override
	public String toString() {
		return id + "\t" + password + "\t" + name + "\t" + age + "\t" + gender + "\t" + phone;
	}
	
	@Override
	protected Object clone() {
		User copy = new User(id, password, name, age, gender, phone);
		return copy;
	}
	
	@Override
	public boolean equals(Object obj) {
		User tmp = (User)obj;
		return this.id.equals(tmp.id)
				&& this.password.equals(tmp.password)
				&& this.name.equals(tmp.name)
				&& this.age == tmp.age
				&& this.gender == tmp.gender
				&& this.phone.equals(tmp.phone);
	}
	
	// getter
	public String getId() {
		return this.id;
	}
	
	public String getPassword() {
		return this.password;
	}
	
	public String getname() {
		return this.name;
	}
	
	public int getAge() {
		return this.age;
	}
	
	public char getGender() {
		return this.gender;
	}
	
	public String getPhone() {
		return this.phone;
	}
	
	// setter
	public void setId(String id) {
		this.id = id;
	}
	
	public void setPassword(String password) {
		this.password = password;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public void setAge(int age) {
		this.age = age;
	}
	
	public void setGender(char gender) {
		this.gender = gender;
	}
	
	public void setPhone(String phone) {
		this.phone = phone;
	}
}
package ncs.test08;

public class UserTest {
	public static void main(String[] args) {
		// users 생성 및 출력
		User[] users = new User[3];
		users[0] = new User("user01", "pass01", "김철수", 32, 'M', "010-1234-5678");
		users[1] = new User("user02", "pass02", "이영희", 25, 'F', "010-5555-7777");
		users[2] = new User("user03", "pass03", "황진이", 20, 'F', "010-9874-5632");
		
		System.out.println("users list ---------------------------------------------");
		for(int i = 0; i < users.length; i++) {
			System.out.println(users[i].toString());
		}
		System.out.println();
		
		// copyUsers 생성 및 출력
		User[] copyUsers = new User[users.length];
		for(int i = 0; i < copyUsers.length; i++) {
			copyUsers[i] = (User)users[i].clone();
		}
		
		System.out.println("copyUsers ----------------------------------------------");
		for(User copy : copyUsers) {
			System.out.println(copy.toString());
		}
		System.out.println();
		
		// users와 copyuesrs 비교
		System.out.println("비교 결과 -----------------------------------------------");
		for(int i = 0; i < users.length; i++) {
			System.out.println(copyUsers[i].equals(users[i]));
		}
	}
}

 


 

문제9
Abstract 클래스에서 상속 받은 두 개의 클래스를 구현하여 데이터를 입력 후 출력하라.
1. Airplane과 Cargoplane 객체를 생성하고, 100씩 운항 후 정보를 출력하라.
2. Airplane과 Cargoplane 객체에 200씩 주유 후 객체 정보를 출력하라.
(모든 클래스 변수의 getter, setter 함수는 직접 구현한다.)

<사용 데이터>
class type planeName fuelSize
Airplane L747 1000
Cargoplane C40 1000

 

package ncs.test09;

public abstract class Plane {
	// 매개변수
	private String planeName;
	private int fuelSize;
	
	// 생성자
	public Plane() {}
	
	public Plane(String planeName, int fuelSize) {
		this.planeName = planeName;
		this.fuelSize = fuelSize;
	}
	
	// 주유
	public void refuel(int fuel) {
		setFuelSize(this.fuelSize + fuel);
	}
	
	// 운항(Abstract method)
	public abstract void flight(int distance);
	
	// getter
	public String getPlaneName() {
		return this.planeName;
	}
	
	public int getFuelSize() {
		return this.fuelSize;
	}
	
	// setter
	public void setPlaneName(String planeName) {
		this.planeName = planeName;
	}
	
	public void setFuelSize(int fuelSize) {
		this.fuelSize = fuelSize;
	}
}
package ncs.test09;

public class Airplane extends Plane {
	// 생성자
	public Airplane() {}
	
	public Airplane(String planeName, int fuelSize) {
		super(planeName, fuelSize);
	}
	
	// 운항
	@Override
	public void flight(int distance) {
		int sub = 0;
		while(distance >= 10) {
			distance -= 10;
			sub += 30;
		}
		
		setFuelSize((getFuelSize() - sub));
	}
	
	// getter
	public String getPlaneName() {
		return super.getPlaneName();
	}
	
	public int getFuelSize() {
		return super.getFuelSize();
	}
	
	// setter
	public void setPlaneName(String planeName) {
		super.setPlaneName(planeName);
	}
	
	public void setFuelSize(int fuelSize) {
		super.setFuelSize(fuelSize);
	}
}
package ncs.test09;

public class Cargoplane extends Plane {
	// 생성자
	public Cargoplane() {}
	
	public Cargoplane(String planeName, int fuelSize) {
		super(planeName, fuelSize);
	}
	
	// 운항
	@Override
	public void flight(int distance) {
		int sub = 0;
		while(distance >= 10) {
			distance -= 10;
			sub += 50;
		}
		
		setFuelSize((getFuelSize() - sub));
	}
	
	// getter
	public String getPlaneName() {
		return super.getPlaneName();
	}
	
	public int getFuelSize() {
		return super.getFuelSize();
	}
	
	// setter
	public void setPlaneName(String planeName) {
		super.setPlaneName(planeName);
	}
	
	public void setFuelSize(int fuelSize) {
		super.setFuelSize(fuelSize);
	}
}
package ncs.test09;

public class PlaneTest {
	public static void main(String[] args) {
		Airplane a = new Airplane("L747", 1000);
		Cargoplane c = new Cargoplane("C40", 1000);
		
		System.out.println("======== 기본 정보 ========");
		System.out.println("Plane \t\t fuelSize");
		System.out.println("--------------------------");
		System.out.println(a.getPlaneName() + " \t\t " + a.getFuelSize());
		System.out.println(c.getPlaneName() + " \t\t " + c.getFuelSize());
		
		System.out.println("\n======= 100 운항 후 =======");
		a.flight(100);
		c.flight(100);
		
		System.out.println("Plane \t\t fuelSize");
		System.out.println("--------------------------");
		System.out.println(a.getPlaneName() + " \t\t " + a.getFuelSize());
		System.out.println(c.getPlaneName() + " \t\t " + c.getFuelSize());
		
		System.out.println("\n======= 200 주유 후 =======");
		a.refuel(200);
		c.refuel(200);
		
		System.out.println("Plane \t\t fuelSize");
		System.out.println("--------------------------");
		System.out.println(a.getPlaneName() + " \t\t " + a.getFuelSize());
		System.out.println(c.getPlaneName() + " \t\t " + c.getFuelSize());
	}
}

 

 


 

문제10
Abstract 클래스에서 상속 받고 interface를 구현한 두 개의 클래스를 구현하라.
(getXXX/setXXX는 직접 만들어서 사용한다.)
1. 사용 데이터를 기반으로 객체를 생성하여 배열에 넣는다.
2. 모든 객체의 기본 정보를 출력한다. (for문 사용)
3. 모든 객체에 인센티브 100씩 지급한 급여를 계산하고 다시 객체의 salary에 넣는다.
4. 모든 객체의 정보와 세금을 출력한다.

<사용 데이터>
name number department salary
Hilery 1 secretary 800
Clinten 2 secretary 1200
package ncs.test10;

public abstract class Employee {
	// 매개변수
	private String name;
	private int number;
	private String department;
	private int salary;
	
	// 생성자
	public Employee() {}
	
	public Employee(String name, int number, String department, int salary) {
		this.name = name;
		this.number = number;
		this.department = department;
		this.salary = salary;
	}
	
	// 세금 계산 (추상 메소드)
	public abstract double tax();
	
	// getter
	public String getName() {
		return this.name;
	}
	
	public int getNumber() {
		return this.number;
	}
	
	public String getDepartment() {
		return this.department;
	}
	
	public int getSalary() {
		return this.salary;
	}
	
	// setter
	public void setName(String name) {
		this.name = name;
	}
	
	public void setNumber(int number) {
		this.number = number;
	}
	
	public void setDepartment(String department) {
		this.department = department;
	}
	
	public void setSalary(int salary) {
		this.salary = salary;
	}
}
package ncs.test10;

public class Secretary extends Employee implements Bonus {
	// 생성자
	public Secretary() {}
	
	public Secretary(String name, int number, String department, int salary) {
		super(name, number, department, salary);
	}
	
	// 세금 계산, salary에 10% 적용한다.
	@Override
	public double tax() {
		return super.getSalary() * 0.1;
	}

	// 인센티브 지급, pay의 80%가 기존 salary에 더해진다.
	@Override
	public void incentive(int pay) {
		int incentive = super.getSalary() + (int)(pay * 0.8);
		super.setSalary(incentive);
	}
}
package ncs.test10;

public class Sales extends Employee implements Bonus {
	// 기본 생성자
	public Sales() {}
	
	public Sales(String name, int number, String department, int salary) {
		super(name, number, department, salary);
	}

	// 세금 계산, salary에 13% 적용한다.
	@Override
	public double tax() {
		return super.getSalary() * 0.13;
	}
	
	// 인센티브 지급, pay의 120%가 기존 salary에 더해진다.
	@Override
	public void incentive(int pay) {
		int incentive = super.getSalary() + (int)(pay * 1.2);
		super.setSalary(incentive);
	}
}
package ncs.test10;

public class Company {
	public static void main(String[] args) {
		Employee[] employees = new Employee[2];
		employees[0] = new Secretary("Hilery", 1, "secretary", 800);
		employees[1] = new Sales("Clinten", 2, "sales\t", 1200);
		
		System.out.println("=== 기존 정보 ====================");
		System.out.println("name \t department \t salary");
		System.out.println("-------------------------------");
		for(int i = 0; i < employees.length; i++) {
			System.out.print(employees[i].getName() + "\t ");
			System.out.print(employees[i].getDepartment() + "\t ");
			System.out.println(employees[i].getSalary());
		}
		
		((Bonus)employees[0]).incentive(100);
		((Bonus)employees[1]).incentive(100);
		
		System.out.println("\n=== 인센티브 100 지급 ===========================");
		System.out.println("name \t department \t salary \t tax");
		System.out.println("-----------------------------------------------");
		for(int i = 0; i < employees.length; i++) {
			System.out.print(employees[i].getName() + "\t ");
			System.out.print(employees[i].getDepartment() + "\t ");
			System.out.print(employees[i].getSalary() + "\t\t ");
			System.out.println(employees[i].tax());
		}
	}
}

'JavaTest' 카테고리의 다른 글

test.controller  (1) 2024.07.08