JAVA/chapter20_api
Test . api
GAWON
2023. 5. 30. 18:28
Q1. Test01.java
Score 클래스 필드 : int kor, eng, mat
메소드 : Constructor, toString(), equals()
Score 인스턴스를 2개 생성하고, 동등 비교(세과목이 모두 같으면 동등) 결과 출력
각 인스턴스 정보는 toString 메소드를 통해 출력
Q2. Test02.java
User 클래스 필드 : String id, password
메소드 : Constructor, toString(), equals()
User 인스턴스를 2개 생성하고, 동등 비교(id, password 모두 같으면 동등) 결과 출력
각 인스턴스 정보는 toString 메소드를 통해 출력
Q3. Test03. java
Coordinate 클래스 필드 : int x, int y;
메소드 : Constructor, equals()
Circle 클래스 필드 : Coordinate center, double radius
메소드 : Constructor, equals()
new Circle(0, 0, 1.5) // 중심 좌표[0,0], 반지름 : 1.5
Q4. Test04.java
Student 클래스 필드 : String no(학번), String name, int[] scores(국,영,수)
double average, char grade, 상수 int COURSE_COUNT(과목수)
메소드 : Student(String no, String name)
setter{
setScores(int kor, int eng, int mat) - 직접 입력
setScores(int[] scores) - 랜덤 입력
setAverage()
setGrade()
}
toString() 학번, 성명, 평균, 학점 출력
equals() 학번이 같으면 같은 학생으로 비교
Q5.Test05.java
성(lastName), 이름(firstName)을 각각 입력 받아
하나의 이름(fullName)을 완성하시오. StringBuffer 클래스를 이용하시오.
위의 방식으로 두 이름을 입력 받아 두 이름(fullName)의 동등 비교를 진행하시오.
Q6.Test06.java
1! ~ 99! 까지 전체 결과를 출력하시오.
1! (1 팩토리얼) = 1
2! (2 팩토리얼) = 1 * 2 = 2
3! (3 팩토리얼) = 1 * 2 * 3 = 6
4! (4 팩토리얼) = 1 * 2 * 3 * 4 = 24
...
n!: (n-1) * n
ex)
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
...
99!
Q7.Test07.java
현재 날짜를 StringBuffer, Calendar 클래스를 이용하여
"2019년 10월 21일 월요일 오후 1시 10분" 과 같은 형식으로 완성하고 출력하시오.
StringBuffer.append() 이용
String[] weeks = {"","일","월","화","수","목","금","토"};
package org.joonzis.test;
/*
Q1. Test01.java
Score 클래스 필드 : int kor, eng, mat
메소드 : Constructor, toString(), equals()
Score 인스턴스를 2개 생성하고, 동등 비교(세과목이 모두 같으면 동등) 결과 출력
각 인스턴스 정보는 toString 메소드를 통해 출력
*/
class Score {
private int kor;
private int eng;
private int mat;
public Score (int kor, int eng, int mat) {
this.kor = kor;
this.eng = eng;
this.mat = mat;
}
@Override
public String toString() {
String info = "[국어 : " + kor +"점, 영어 : " + eng +"점, 수학 : " + mat + "점]";
return info;
}
@Override
public boolean equals(Object obj) {
if(obj != null && obj instanceof Score) {
Score other = (Score) obj;
return kor == other.kor && eng == other.eng && mat == other.mat;
}else {
return false;
}
}
}
public class Test01 {
public static void main(String[] args) {
Score score1 = new Score(80, 80, 81);
Score score2 = new Score(80, 80, 81);
System.out.println(score1); // == System.out.println(score1.toString());
System.out.println(score2); // == System.out.println(score2.toString());
if (score1.equals(score2)) {
System.out.println("같은 점수입니다.");
}else {
System.out.println("다른 점수입니다.");
}
}
}
package org.joonzis.test;
/*
Q2. Test02.java
User 클래스 필드 : id, password
메소드 : toString(), equals()
User 인스턴스를 2개 생성하고, 동등 비교(id, password 모두 같으면 동등) 결과 출력
각 인스턴스 정보는 toString 메소드를 통해 출력
*/
class User {
private String id;
private String password;
public User (String id, String password) {
this.id = id;
this.password = password;
}
@Override
public String toString() {
return "User [id=" + id + ", password=" + password + "]";
}
@Override
public boolean equals(Object obj) {
if(obj != null && obj instanceof User) {
User other = (User)obj;
return id.equals(other.id) && password.equals(other.password);
}else {
return false;
}
}
}
public class Test02 {
public static void main(String[] args) {
User user1 = new User("abc123", "123a");
User user2 = new User("abc124", "123a");
System.out.println(user1);
System.out.println(user2);
if (user1.equals(user2)) {
System.out.println("같은 회원입니다.");
}else {
System.out.println("다른 회원입니다.");
}
}
}
package org.joonzis.test;
/*
Q3. Test03. java
Coordinate 클래스 필드 : int x, int y;
메소드 : Constructor, equals
Circle 클래스 필드 : Coordinate center, double radius
메소드 : Constructor, equals
new Circle(0, 0, 1.5) // 중심 좌표[0,0], 반지름 : 1.5
*/
class Coordinate {
private int x;
private int y;
public Coordinate(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public boolean equals(Object obj) {
if(obj != null && obj instanceof Coordinate) {
Coordinate other = (Coordinate)obj;
return x == other.x && y == other.y;
}else {
return false;
}
}
}
class Circle { // 포함관계는 상속 보다는 이렇게 따로 클래스 만들어서 구현하는게 낫다함!
private Coordinate center;
private double radius;
public Circle(int x, int y, double radius) {
center = new Coordinate(x, y);
this.radius = radius;
}
@Override
public boolean equals(Object obj) {
if(obj != null && obj instanceof Circle) {
Circle other = (Circle)obj;
return center.equals(other.center) && radius == other.radius;
}else {
return false;
}
}
}
public class Test03 {
public static void main(String[] args) {
Circle circle1 = new Circle(0,0, 1.5);
Circle circle2 = new Circle(0,0, 1.3);
if (circle1.equals(circle2)) {
System.out.println("같은 원 입니다.");
}else {
System.out.println("다른 원 입니다.");
}
}
}
package org.joonzis.test;
/*
Q4. Test04.java
Student 클래스 필드 : String no(학번), String name, int[] scores(국,영,수)
double average, char grade, 상수 int COURSE_COUNT(과목수)
메소드 : Student(String no, String name)
setter{
setScores(int kor, int eng, int mat) - 직접 입력
setScores(int[] scores) - 랜덤 입력
setAverage()
setGrade()
}
toString() 학번, 성명, 평균, 학점 출력
equals() 학번이 같으면 같은 학생으로 비교
*/
class Student{
private String no;
private String name;
private int[] scores;
private double average;
private char grade;
public final static int COURSE_COUNT = 3; // 과목수 , 누구든, 어디서든 Student.COURSE_COUNT로 확인가능
public Student(String no, String name) {
this.no = no;
this.name = name;
scores = new int[COURSE_COUNT];
}
public void setScores(int kor, int eng, int mat) {
scores[0] = kor;
scores[1] = eng;
scores[2] = mat;
setAverage();
setGrade();
}
public void setScores(int[] scores) {
for(int i = 0; i < COURSE_COUNT; i++) {
this.scores[i] = scores[i];
setAverage();
setGrade();
}
}
private void setAverage() {
//average = (scores[0] + scores[1] + scores[2]) / 3.0; 과목이 3과목으로 정해졌을땐 이렇게 쓰지만
int total = 0;
for (int i = 0 ; i < COURSE_COUNT; i++) { // 과목 수 변동이 가능할 경우 이렇게 하자!
total += scores[i];
}
average = (double)total / COURSE_COUNT ;
}
private void setGrade() {
switch((int)average / 10) {
case 10:
case 9 : grade = 'A'; break;
case 8 : grade = 'B'; break;
case 7 : grade = 'C'; break;
case 6 : grade = 'D'; break;
default : grade ='F';
}
/*
if(average >= 90 ) { grade = 'A';}
else if(average >= 80) { grade ='B'; }
else if(average >= 70) { grade ='C'; }
else if(average >= 60) { grade ='D'; }
else { grade ='F'; }
*/
}
@Override
public String toString() {
return "학번 : " + no + " 성명 : " + name + " 평균 : " + average + " 학점 :" + grade;
}
@Override
public boolean equals(Object obj) {
if(obj != null && obj instanceof Student) {
Student other = (Student)obj;
return no.equals(other.no) && name.equals(other.name);
}else {
return false;
}
}
}
public class Test04 {
public static void main(String[] args) {
Student student1 = new Student("5002214", "돼지");
Student student2 = new Student("5002215", "토끼");
int[] mid = new int[Student.COURSE_COUNT];
for(int i = 0; i < Student.COURSE_COUNT; i++) {
mid[i] = (int)(Math.random()*101);
}
student1.setScores(mid);
student2.setScores(70, 71, 72);
System.out.println(student1);
System.out.println(student2);
if(student1.equals(student2)) {
System.out.println("같은 학생입니다.");
}else {
System.out.println("다른 학생입니다.");
}
}
}
package org.joonzis.test;
import java.util.Scanner;
/*
Q5.Test05.java
성(lastName), 이름(firstName)을 각각 입력 받아
하나의 이름(fullName)을 완성하시오. StringBuffer 클래스를 이용하시오.
위의 방식으로 두 이름을 입력 받아 두 이름(fullName)의 동등 비교를 진행하시오.
*/
public class Test05 {
// Field
static Scanner scanner = new Scanner(System.in);
// Method
public static String inputName() {
StringBuffer sb = new StringBuffer();
System.out.print("성(lastName) >>");
String lastName = scanner.nextLine();
System.out.print("이름(firstName) >>");
String firstName = scanner.nextLine();
sb.append(lastName).append(" ").append(firstName);
return sb.toString(); // StringBuffer -> String으로 리턴한다.
}
public static void main(String[] args) {
// 메인에서 다른 메소드를 호출하려면 모두 static 처리를 해야 호출이 가능하다.
// static 메소드는 static만 호출 할 수 있다!!!
String fullName1 = inputName();
String fullName2 = inputName();
System.out.println("성명1 : " + fullName1);
System.out.println("성명2 : " + fullName2);
System.out.println(fullName1.equals(fullName2) ? "같은이름" : "다른이름");
scanner.close();
}
}
package org.joonzis.test;
import java.math.BigInteger;
/*
Q6.Test06.java
1! ~ 99! 까지 전체 결과를 출력하시오.
ex)
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
...
99!
방식)
1! (1 팩토리얼) = 1
2! (2 팩토리얼) = 1 * 2 = 2
3! (3 팩토리얼) = 1 * 2 * 3 = 6
4! (4 팩토리얼) = 1 * 2 * 3 * 4 = 24
...
n!: (n-1) * n
*
*/
public class Test06 {
public static void main(String[] args) {
// int
// int sum = 1;
// for(int i=1; i<100; i++) {
// sum *= i;
// System.out.println(i + "! = " + sum);
// }
// long
// long sum = 1;
// for(int i=1; i<100; i++) {
// sum *= i;
// System.out.println(i + "! = " + sum);
// }
//BigInteger
BigInteger n = new BigInteger("1");
for(int i=1; i<100; i++) {
n = n.multiply(BigInteger.valueOf(i));
System.out.println(i + "! = " + n);
}
}
}
package org.joonzis.test;
import java.util.Calendar;
/*
Q7.Test07.java
현재 날짜를 StringBuffer, Calendar 클래스를 이용하여
"2019년 10월 21일 월요일 오후 1시 10분" 과 같은 형식으로 완성하고 출력하시오.
*/
public class Test07 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
Calendar now = Calendar.getInstance(); // 이미 현재시간으로 자동세팅됨
String[] weeks = {"","일","월","화","수","목","금","토"}; // 요일 번호를 인덱스로 사용하자!
sb.append(now.get(Calendar.YEAR) + "년 ");
sb.append((now.get(Calendar.MONTH)+1) +"월 ");
sb.append(now.get(Calendar.DATE) + "일 ");
sb.append(weeks[now.get(Calendar.DAY_OF_WEEK)] + "요일 ");
sb.append(now.get(Calendar.AM_PM) == 0 ? "오전 " : "오후 " );
sb.append(now.get(Calendar.HOUR) + "시 ");
sb.append(now.get(Calendar.MINUTE) + "분");
System.out.println(sb);
}
}