-
[Java] 배열 - ArrayJava 2021. 5. 3. 18:02반응형
배열을 이용한 구구단 출력 예제
12345678910111213public class Gugudan {public static void main(String[] args) {int[] result = new int [9];for (int i = 0; i < result.length; i++) { //length -> 배열의 크기를 얻어온다.result[i] = 2 * ( i + 1 ); //실행결과를 각각의 위치를 result에 담는다.}//배열에 값을 담는 과정for (int i = 0; i < result.length; i++) {System.out.println(result[i]);}}}cs 일단 전체 과정은 이렇다.
코드를 하나하나 분석해보면,
int[] result = new int [9];int[] result = new int [9]; 로 배열을 만들어주었다.
안에 숫자 [9] 는 열의 크기를 의미
이 배열은 9개의 데이터를 저장할 수 있음, 맨앞에 int를 적어주었으니 정수타입의 숫자만 저장 가능!
그리고 for문을 사용하여 반복문을 이용,
for (int i = 0; i < result.length; i++) { result[i] = 2 * ( i + 1 ); }여기서 result.length 는 배열의 크기를 얻어오는 과정,
그리고 실행결과를 result에 담아준다.
프로그램에서는 숫자가 0부터 시작이므로 result[i] = 2 * ( i + 1 ) ; 0부터 +1을 해서 곱하기를 해주는 과정
(수학에서의 사칙연산 우선순위와 같다. 괄호안에 있는것이 먼저 실행)
실행을 하게되면 2단을 result에 담게 된다.
for (int i = 0; i < result.length; i++) { System.out.println(result[i]); }담았으면 이제 꺼내줘야 한다. 위의 식은 출력하는 식, System.out.println 을 사용하여 출력해준다.
값을 넣을때에는 우측에 값을 지정해줬는데 반대로 값을 꺼낼 때에는 result[i] 위치를 지정해주면 해당하는 값을 꺼내오게 된다.
응용해서 3단, 4단을 출력해보자 !
result = new int [9]; for (int i = 0; i < result.length; i++) { result[i] = 3 * ( i + 1 ); } for (int i = 0; i < result.length; i++) { System.out.println(result[i]); }result 앞에있던 int[] 를 지워버리면 기존의 result에 갚을 덮어씌우게 된다.
그리고 숫자를 3으로 바꿔주면 3단이 출력
만약 2단과 3단을 다른 배열에다 저장하고 싶을 경우엔 int[] 옆에 변수명을 다르게 입력해주면 된다.
int[] times = new int [9]; for (int i = 0; i < times.length; i++) { times[i] = 3 * ( i + 1 ); } for (int i = 0; i < times.length; i++) { System.out.println(times[i]); }int[] result 에서 변수명만 times 로 바꿔주면 서로 배열은 따로 관리하게 된다.
하지만 이렇게 계속 9단 10 단 11단 반복되게되면 코드가 길어지고 유지보수가 안된다.
이를 개선하기 위해서는 여러가지 방법이 있다.
그중 하나인
1. 메소드, 함수를 이용하여 제거하는 방법
곱셈 결과를 배열에 담아서 배열로 반환해주는 method 생성해준다
public class Gugudan { public static int[] calculate(int result2){ int[] result = new int [9]; for (int i = 0; i < result.length; i++) { result[i] = result2 * ( i + 1 ); } return result; }원래는 static 옆에 void를 적어주었다. void는 반환되는값이 없을 때 사용되지만, 지금은 결과를 배열로 반환받기 위해 void를 없애고 int[] 정수타입의 배열을 넣었다. 그리고 mathod 이름을 calculate로 설정
그 안에 메소드가 몇단인지 지정해주는 입력값을 준다. (int result2) * 입력과 출력으로 나뉨
아래 코드를 복사 후, 기존에는 2, 3, 4 정해줬었는데 이제는 우리가 전달하는 값에따라 자동으로 달라지게 하기 위해서 숫자부분을 result2 를 넣어준다. 그리고 반환이 될 수 있도록 return 키워드를 넣어줌
result 라는 변수 타입은 int[] 배열이다.
method의 반환값을 resul2와 일치시켜준다.int[] result = calculate(2);기존의 로직에서 new int[9] 부분이 사라지고 우리가 전달하는 값에따라 바뀌게 할 수 있도록 위에서 만들어준
calculate라는 메소드를 호출해 원하는 곱셈 값을 배열에 담아 반환된 결과만을 출력할 수 있도록 한다.
그리고 마지막으로 또 하나 중복되는 부분은 실행결과인데, 이부분도 메소드를 만들어 분리해주면 좋다 .
public static void print(int[] result) { for (int i = 0; i < result.length; i++) { System.out.println(result[i]); } }입력만 있고 출력은 없기때문에 void를 다시 넣어주고, 배열에 넣어있는 값을 출력하기 위해 int[] result 를 적어준다.
public static void main(String[] args) { int[] result = calculate(2); print(result); } }이렇게 되면 System.out.println 같이 길게적었던 코드를 간략하게만 적어주어도 출력이 된다.
하지만 이것도 마찬가지로 2,3,4 점점 늘어날 수록 코드가 길어지므로 반복문을 사용하여 코드를 줄일 수 있는데
이럴때 바로 두번째 방법인 반복문을 사용한다.
2. for문 반복문 사용
public static void main(String[] args) { for (int i = 2; i < 10; i++) { int[] result = calculate(i); print (result); } } }2부터 반복해서 계속 돌다가 10을 만나면 for문이 종료된다.
이런식으로 배열과 반복문,변수를 활용하면 단순반복적으로 발생하는 부분들을 이렇게 적은 코드로 구현할 수 있다.
반응형'Java' 카테고리의 다른 글
[Java] 추상클래스 abstract (0) 2022.05.17 [Java] 열거형(Enum) (0) 2022.05.17 [Java] List/Map/Set 차이 (0) 2021.10.18 [Java] Integer.valueOf() 와 Integer.parseInt()의 차이 (0) 2021.09.23 [Java] 조건,반복문 사용 - for, while, if (0) 2021.05.03