▶프로세싱 활용노트 ③ - loadStrings(), arrayList()
loadStrings()활용하기
loadStrings()의 문법, 기능 및 활용, 예시 순으로 살펴보려고합니다.
loadStrings()의 Syntax
loadStrings()의 Syntax는 크게 두 가지로 나눌 수 있다.
loadStrings(filename);
loadStrings(reader);
loadStrings()의 기능 및 활용
loadString()는 파일의 내용을 읽어 들여 '문자열 배열'형식으로 리턴합니다. loadStrings(파일이름)형태와 같이 파일이름이 파라미터로 사용하고자 할 경우에는 작업 진행이전에 현재 작업중인 Processing파일의 sketch폴더 내에 위치한 'data'폴더 내에 불러오고자하는 데이터파일을 위치시켜야합니다.
loadStrings(파일이름)의 형태로 사용하고자 할 경우
프로세싱에서 loadStrings()는 굉장히 다양한 경우에 활용됩니다. 그중에서 loadStrings(파일경로)와 같은 형태로 사용하고자 할 경우, 프로세싱 을 run하기 전에 미리 데이터를 다음과 같은 위치에 저장해두어야 한다.
sketch>data> [파일이 있어야할 곳]
위와 같이 프로세싱으로 로드하고자하는 파일을 미리 위치시켜야 한다.
폴더내에 저장된 데이터파일을 프로세싱으로 로드하는 기능 외에, loadStrings()는 url을 파라미터로 입력하여 데이터를 직접 불러올 수 있다.
loadStrings(url)형태로 사용하고자 할 경우의 예시
loadStrings()는 문자열 배열형태를 리턴하기때문에 그에 맞는 형식을 설정해주어야 한다.
String data[] = loadStrings("http://processing.org/about/index.html);
여기서 println은 단지 loadStrings()로 불러온 데이터가 몇줄로 구성되어있는지만을 보기위함이다.
println("there are " + lines.length + "lines");
문자열배열 형태를 그대로 println()할 경우 우리는 결과값을 볼 수 없다. 이 예제에서는, for()반복구문을 활용하여 그 속에서 data배열에 저장된 각 줄의 정보를 콘솔창에 출력함으로써 결과를 확인하도록한다.
for(int i = 0; i < data.length; i++){
println(data[i]);
}
loadStrings(url)예제의 결과화면
"there are 9 lines"을 통해 loadString(url)예제를 통해 로드된 정보는 총 9개의 줄로 구성되어있다는 것을 확인할 수 있다. 그 아래줄부터의 정보는 for()구문 내에서 data배열의 각 줄에 해당하는 정보를 println()기능으로 출력하도록 설정한 결과이다.
loadStrings()의 에러
null값이 반환되는 경우 : 사용할 수 없는 파일이거나, 에러가 발생한 경우에 null값이 반환된다.
NullPointerException : 코드를 작성시, null값 여부를 체크하는 것을 포함하지않는경우에 일어날수있다.
ArrayList()활용하기
여기에서 <ExoPlanet>형태의 구문을 사용하는 것은, ArrayList를 ExoPlanet 오브젝트로 채우고자 함이다.
ArrayList<ExoPlanet>planets = new ArrayList();
ArrayList()에 객체를 추가하기
ArrayList에 객체를 추가하는 것은 add()을 통해서 가능하다.
planets.add(p);
ArrayList()에서 객체를 빼기
객체를 arrayList에서 빼는 것도 가능하다.
ExoPlanet p = planets.get(0);
ArrayList()의 데이터 출력
ArrayList()에 몇개의 데이터가 있는지 출력하고자한다면 size()를 사용한다.
int total = planets.size();
ArrayList의 반복구문 활용방법 두가지
첫 번째. 카운팅을 이용하여 각 요소에 접근하기
for(int i = 0; i < planets.size(); i++){
ExoPlanet p = planets.get(i);
}
두 번째 방법은, 카운팅의 방식보다 개선된 방법이다.
for(ExoPlanet p : planets){
planets.display();
}
ArrayList()지우기
planets.remove(0);
println(planets.size());
ArrayList() 반복구문으로 뒤에서부터 지우기
이것은, for구문을 활용하면서 그 데이터에 뒤에서부터 접근하여 지워나가는 방법이다.
for(int i = planets.size-1; i > = 0; i--){
ExoPlanet p = planets.get(i);
if(p.finished()){
planets.remove(i);
}
}
'시각화 > 프로세싱' 카테고리의 다른 글
▶함께배우는 프로세싱 :: generative design M6.1 Spring (0) | 2015.03.01 |
---|---|
▶함께배우는 프로세싱 :: generative design P.2.2.3 Shape from agents (2) | 2015.02.03 |
▶프로세싱활용노트② ambientLight(), directionalLight() (2) | 2015.01.13 |
▶함께배우는 프로세싱 :: Complex modules in a grid (0) | 2015.01.12 |
▶프로세싱 에러해결 ① You might be missing a library. (5) | 2015.01.11 |