테스트 예시 만들기
- 1개의 Test의 class 생성
- Test값을 받는 리스트 생성
- 리스트를 출력하는 Main class 생성
1. 테스트의 class 는 전 글에서 복붙하여 사용
- 이유: 귀찮음
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
// 테스트 1개의 정보를 입력
private static int count;
private int index;
private String TestName;
private boolean isResult;
private int TestPrice;
private Date date;
// 생성자 입력
public Test(String testName, boolean isResult, int TestPrice, Date date) {
this.index = count;
++count;
this.TestName = testName;
this.isResult = isResult;
this.TestPrice = TestPrice;
this.date = date;
date.setYear(date.getYear()-1900);
date.setMonth(date.getMonth()-1);
}
// getter setter 생성
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public String getTestName() {
return TestName;
}
public void setTestName(String testName) {
TestName = testName;
}
public boolean isResult() {
return isResult;
}
public void setResult(boolean isResult) {
this.isResult = isResult;
}
public int getTestPrice() {
return TestPrice;
}
public void setTestPrice(int testPrice) {
TestPrice = testPrice;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String toString() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd E요일");
DecimalFormat df = new DecimalFormat("₩#,##0");
return "test [index=" + index + ", TestName=" + TestName + ", 결과=" + isResult +
", 가격=" + df.format(TestPrice) + ", 날짜=" + sdf.format(date)+ "]";
}
}
2. ArrayList class 만들기
- ArrayList 배열을 생성함
이때 제네릭안에는 클래스형 일반연산자를 쓰는 대신에 일반연산자 타입을 대신할 수 있는 Test를 써서 타입을 대체
public class TestList {
// 테스트의 리스트를 만듬
private ArrayList<Test> testlist = new ArrayList<>();
2. class 객체 추가
리스트에 추가를 해줘야하기 때문에 그 목적에 맞는 동작을 하는 객체 생성
리턴값을 주지않고 동작만 하기 때문에 void를 씀
* 가끔씩 static 붙여나오는데 꼭 지워줘야 오류발생하지 않음 > 저장공간을 공유하지 않는 개별 메모리
형식:
public void [변수 이름 지정] (쓰일 변수 이름 + 그 변수를 대변할 변수이름)
현재 클래스의 이름 + 조건을 실행할 지역변수 입력 (그 변수를 대변할 변수이름)
public void testadd(Test testn) {
//Test class에서 testn이라는 변수를 받아옴
testlist.add(testn);
// testlist.add함수를 써서 괄호안에 있는 지정된 testn이라는 변수를 더한다는 의미
3. 생성자 추가
생성자를 추가함으로써 다른 class 파일에서 이 class를 선언할 수 있고, 선언함으로써 위에 추가한 void 객체를 실행할 수 있음
public TestList() {
}
public TestList(ArrayList<Test> testlist) {
this.testlist = testlist;
}
4. getters setters 생성
Alt Shift s > r
생성함으로서 private arraylist class 안의 데이터를 출력하거나 입력할 수 있음
public ArrayList<Test> getTestlist() {
return testlist;
}
public void setTestlist(ArrayList<Test> testlist) {
this.testlist = testlist;
}
5. toString 생성
toString을 선언함으로서 데이터의 서식을 지정하여 출력할 수 있음
다만 arraylist를 저장한 모든 값을 한줄씩 띄어쓴 후 출력해야 하기 때문에 아래와 같이 return 값을 변경하여 사용
- String을 null 말고 공백으로 선언
- 향상된 for문을 사용해서 testlist에 저장된 모든 Test 값을 String 공백 값 안에 저장
- Test class를 ts로 정의한 후 testlist에 저장된 모든 값을 ts로 받아온다.
- 그 후에 str += ts로 str에 모든 값을 저장하고 \n을 통해 한줄씩 띄어쓰는 조건문을 만듬
@Override
public String toString() {
String str = "";
for(Test ts : testlist)
str += ts + "\n";
return str;
}
코드 완성본
import java.util.ArrayList;
public class TestList {
ArrayList<Test> testlist = new ArrayList<>();
// 클래스 선언
public TestList() {
}
// 생성자 선언
public TestList(ArrayList<Test> testlist) {
this.testlist = testlist;
}
// getter & setter
public ArrayList<Test> getTestlist() {
return testlist;
}
public void setTestlist(ArrayList<Test> testlist) {
this.testlist = testlist;
}
// toString
@Override
public String toString() {
String str = "";
for(Test ts : testlist)
str += ts + "\n";
return str;
}
// 생성자 조건문
public void testadd(Test testn) {
testlist.add(testn);
}
}
3. Main Class 선언
import java.util.Date;
public class test3 {
public static void main(String[] args) {
TestList testlist = new TestList();
Test t = new Test("테스트", false, 30000, new Date(2022, 1, 22));
Test t2 = new Test("테스트", false, 30000, new Date(2022, 1, 22));
Test t3 = new Test("테스트", false, 30000, new Date(2022, 1, 22));
testlist.testadd(t);
testlist.testadd(t2);
testlist.testadd(t3);
System.out.println(testlist);
}
}
출력문
test [index=1, TestName=테스트, 결과=false, 가격=₩30,000, 날짜=2022.01.22 토요일]
test [index=2, TestName=테스트, 결과=false, 가격=₩30,000, 날짜=2022.01.22 토요일]
test [index=3, TestName=테스트, 결과=false, 가격=₩30,000, 날짜=2022.01.22 토요일]
'국비과정 > 자바 선행학습 (1-17~1-21,22)' 카테고리의 다른 글
자바 선행학습 5일차 (마지막) - class, 생성자, 메소드 (0) | 2022.01.22 |
---|---|
자바 선행학습 5일차 (마지막) - ArrayList (0) | 2022.01.22 |
자바 선행학습 4일차 - class & method & 반복문게임 (0) | 2022.01.20 |
자바 선행학습 3일차 - Random, refactoring, 더블 for문, while & do-while, Date, SimpleDateFormat, equals(), String method (0) | 2022.01.19 |
자바 선행학습 2일차 - for , 향상된 for, switch random (0) | 2022.01.19 |