본문 바로가기
JAVA

사원 연봉 계산기 #1

by mingutistory 2019. 8. 30.
728x90

https://blog.naver.com/ndb796/220515854664

 

1. 자바 초보 프로젝트 - 객체 지향 설계하기

컴퓨터 공부를 할 때에는 무작정 공부를 하는 것 보다는 하나의 프로젝트를 할 때 더 많은 지식을또한 더 ...

blog.naver.com

어떤 걸 짜봐야 할지 아이디어가 없어서 안경쟁이개발자님이 올려놓으신 이걸 참고하기로 했다. 완성 코드가 있는 줄 알고 시작한건데 없어서 일단은 찾아서 해결해보기로 했다. 

 

기록

 

 1. Default constructor cannot handle exception type FileNotFoundException thrown by implicit super constructor. Must define an explicit constructor

: 클래스에 매소드를 생성하지 않고 그 안에서 함수를 작성했다. 아직 개념이 머리에 확립되지 않았구나라는 걸 한 번 더 느낌. 생성자랑 이런게 책을 피고 읽으면 이해가 되는데 막상 적용을 시키기가 어렵다. 

 

2. 파일 읽는 코드는 아직 잘 이해가 안간다. 일단 그냥 보면서 긁었다. 

 

3. 

List list = new ArrayList(); 

list.size()

어레이 리스트 자체를 잘 모르고 사용하는 중이다. 

 

항목을 구분해야 함. 

2014, 2015 구분해서 -> 이차원 배열로

직책을 구분해서 서로 다른 계산식에 따라서 연봉 계산 필요

이름

연봉

판매, 임원인 경우에만 존재하는 숫자

 

어레이 리스트에 저장된 데이터를 split으로 나눠서 다시 배열에 넣을 수 있나? << 이 부분에서 막혀 있는 것. 

for문 안에서 

String EmployeeLine;
String[] EmployeeArray;

EmployeeLine = list.get(i);
EmployeeArray = EmployeeLine.split(" "); 

이렇게 사용하니까 [Ljava.lang.String;@506e1b77 이런 식의 결과값이 나왔다. 뭘 의미하는건지 모르겠음. 

 

결국 배열로 받는 걸 포기하고 리스트로 받으려고 했는데 split은 되었으나 제어를 못하는 중. 결국 리스트 혹은 어레이리스트의 이해가 필요한 부분임. (당연한 소리;) 

 

Arrays.list() 배열을 리스트처럼 사용. 

 

txt 파일

 

2014 Employee Smith,John 2000
2015 Salesman Jones,Bill 3000 100000
2014 Executive Bush,George 5000 55
2015 Employee Minkyeong,Choi 3000
2015 Executive Roi,Jo 6000 80
2015 Salesman King,Sales 8000 1000000
2014 Salesman Roi,Kim 4000 150000

 

이렇게 해뒀는데 항목이 4개 인것과 5개 인것을 어떻게 구분해야 되는건지 혼란. 

>> 처음에는 4개를 읽고, 그 뒤에 클래스 가서 5번째 항목을 읽는건 어떨까? 

>> 하지만 그렇게 하면 결국에 list를 나누는 과정에서 혼선이 온다. 

 

헝 속상하지만 일단 마지막 항목을 모두 빼고 작업해보는 걸로 

 

ㅠㅠ 

드디어 

 

class Employee {

static List yearList = new ArrayList();
static List positionList = new ArrayList();
static List nameList = new ArrayList();
static List salaryList = new ArrayList();

public static void getInfo() {

List list = new ArrayList();
String[] employeeList = null;

File file = new File("C:\\Users\\민경\\Desktop\\개발\\EmployeeFile.txt");

try {

FileReader fileReader = new FileReader(file);
BufferedReader bufReader = new BufferedReader(fileReader);
String line = "";

while ((line = bufReader.readLine()) != null) {
employeeList = line.split(" ");

for (int i = 0; i < employeeList.length; i++) {
employeeList[i] = employeeList[i].trim();
list.add(new String(employeeList[i]));

if (i%4==0) {
yearList.add(employeeList[i]);
} else if (i%4==1) {
positionList.add(employeeList[i]);
} else if (i%4==2) {
nameList.add(employeeList[i]);
} else if (i%4==3) {
salaryList.add(employeeList[i]);
}
}

}


bufReader.close();


} catch (FileNotFoundException e) {
System.out.println("CANNOT FIND THE FILE");
} catch (IOException e) {
System.out.println(e);
}


}
}

 

 

이렇게 하는게 맞나 싶지만 그래도 일단 따로따로 읽어 냈다. 이 방법은 항목이 전부 일치해야 되기 때문에 좋은 항목은 아닌듯 하지만 일단은 이렇게 해본다. 만약에 파일에서 구분자가 띄어쓰기가 아니라 다른 거였으면 그래도 다른 방법으로 시도라도 해봤을 텐데 지금은 어떤 형식인지 잘 모르겠다. 

 

(+) 2019. 09. 10

완전 아무것도 모르고 클래스 사용하고 있었다는 생각을 했다. 객체 개념을 아애 이해하지 못하고 있었음. arrayList는 필요 없고 그냥 클래스 배열을 이용해서 저장 할 수 있겠다는 생각.

 

 

 

300x250

댓글