반응형

 

Java 공부하다말고 뜬금없이 축구 생각이 나서  프로그램 하나 작성해보았습니다.
이번에는 축구 대표팀 선수들의 명단을 다차원 배열 형식으로 작성한 이후, 배열 요소의 갯수를 계산하여 출력하는 형태로 만들었습니다.

 [01] 이번 프로그램에 사용된 대표팀 자료

 

 전북 현대 모터스 아시아 최강으로 만들었던 '봉동이장' 최강희 감독이 대표팀 감독이 되었습니다. 이에 따라 월드컵 진출 좌절 위기에 처했던 대표팀을 살리기 위해 K리그의 경험이 풍부한 노장 선수들 위주로 대표팀을 새롭게 구성하였습니다. 이에 따라 조광래호와는 확연히 다른 라인업으로 팀을 꾸렸으며, 결국 2:0으로 승리를 거머쥐면서 2014 브라질 월드컵 아시아 최종예선에 진출하게 됩니다. 

위 자료를 바탕으로, 각 포지션에 맞게 함수를 배열하여 입력하였습니다.
저도 자바 입문인 탓에, 선수 등번호나 생년월일 등 세세한 정보를 입출력할 수가 없어서 아쉽고 답답하더군요. 혹시 잘 아시는 분들 트래백이나 댓글 부탁드려요 ^^

 

 [02] 한번 코딩해봅시다!

 

- 클래스 이름 : koreateamlineup
- 선수단 변수명 : players (문자열 String 형)
- 인원수 변수명 : gk (골키퍼) , df (수비수) , mf (미드필더) , fw (공격수) , total (전체) - int 정수형
- 감독 변수명 : manager (문자열 String 형)
- 총 LOC (Lines of Code) 수 : 43개 (빈 공간 및 주석 포함)
- 파일 다운로드 :Java.zip

 

 국산 전문가용 메모장인 Editplus v3.4로 직접 작성했습니다.
일단 배열의 개념에 대해 어느 정도 아셔야합니다. 여기서는 기껏해야 2차원입니다. 갑작스레 욕심이 나서 작성을 해보았습니다. 작성하면서 많은 것을 느꼈습니다.

 


 [1]. 1차원 배열 선언시 자료형 [] 변수형= { }; 이렇게 선언한다.

 1차원적으로 배열을 선언하는 방법은 의외로 간단합니다.
예) int [] WCyears = { 1994, 1998, 2002, 2006, 2010, 2012, 2014 };

 
배열이란 복수의 동일한 형의 변수를 묶어 놓은 것입니다. 즉, 다량의 데이터를 다루거나 복수의 데이터를 차례대로 읽어들이고 싶을 때 사용하면 편합니다.[각주:1]

[2]. 2차원 이상의 배열 선언시 []을 달랑 1개만 적어서는 안된다.

 제가 아래의 '틀린 예' 처럼 작성해놓고 아무리 javac로 컴파일러 해도 안되서 한참 고민했습니다. 그래서 찬찬히 코드를 봤더니 이런 실수를 해버렸더군요.
 
옳은 예) String [][] players={...}, {...} ;
틀린 예) String [] players={...}, {...}; <- 분명 2개 이상의 배열 있었음 


 배열문 안에 {} 중괄호가 2개 이상 있다면 2차원이라면 []를 2개, 3차원은 3개씩 적어둬야 정확한 데이터 값을 찾아낼 수 있고, 컴파일러시 오류가 안생깁니다.

[3]. 사소한 기호나 점, 함수 철자 오타 안나게 조심하라

 아무리 충분히 숙지하셨더라도, 아직 손에 덜 익은 초보자로서는 사소한 오타 한 두개 때문에 고민을 여러번 하실 법도 합니다. 그 중에서 제가 한 실수들 위주로 작성해보았습니다.

 String [][] players={
    {"정성룡","김영광","권순태"}; // (1)
    {"이정수","김형일","곽태휘","최효진","홍정호","오범석","조성환"}  //(2)
    {"김두현","이청용","김상식","이근호","신형민","하대성","기성용"}, // (1)의 정답
    {"김신욱","이동국","박주영"}, //(3)
   }; //(4)

(1) : 세미콜론(;)은 하나의 함수가 종료되는 부분에 붙이는 기호입니다. 그런데, 자신도
       모르게 습관적으로 ;을 붙이게 됩니다. 이럴 땐 파란색 (1) 처럼 쉼표를 쓰시면 됩니다.
(2) : 아무런 기호없이 백 혹은 그냥 엔터치시면 안됩니다. 역시 파란색 (1) 처럼.
(3) : 바로 아랫줄에 }; 이 보이시죠? 이는 String [][] players= 함수의 끝을 나타내는
       기호입니다. 이렇게 끝에 도달했을때는 빨간색 (2) 처럼 공백으로 놔두세요.
(4) : 이 부분에 세미콜론(;)이 와야 정상인데, 의외로 빼 먹을 수 있지요 ^^
(5) : players.lenght (X) => players.length (O)  : 의외로 영어철자에서 오류 발생!

 

이 소스코드에 사용된 데이터 값의 배열이 어떻게 되는지 이해하시는데 도움을 드리고자 직접 포토샵으로 꾸며봤습니다. 발로 그린지라 이해하실지 모르겠네요 ㅋㅋ

 참고로 인간은 숫자를 셀 때 1,2,3,4, 이렇게 1부터 시작하지요?
하지만, Java에서는 0,1,2,3... 이렇게 0부터 세기 시작합니다.

 
그러므로 권순태(상주 상무) 골키퍼를 고르기 위해 값을 player[1][3]으로 입력하면 권순태 골키퍼가 아니라 곽태휘 선수(울산 현대,DF)가 출력하게 되는 엉뚱한 결과가 나타납니다. 그러므로 배열에서 특정 값을 입력할 땐 반드시 0부터 세어야 한다는 점을 명심하시기 바랍니다.

 그럼, 이 글을 마치겠습니다.
감사합니다 ^^

  1. 책 "Java가 보이는 그림책" p36. L05. 배열 - 배열의 개념 [본문으로]
반응형
반응형