두번째 튜터링 시간에는 반복문, 배열을 배웠다. 대부분 다른 언어에서 사용해봐서 익숙 했지만 for-each문을 처음 만나서 결과값을 예측하기가 매우 어려웠다.
▷배열
- 반복문(For)
import java.util.Scanner;
public class for_Sample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int sum=0;
for(int i=1;i<=10;i++) { //i는 1부터 10까지 반복
sum+=i; //sum에 i값 저장
System.out.print(i); // i출력
if(i>=10)
System.out.print("="); //i가 10이상인경우 =출력
else
System.out.print("+"); //i값이 10미만인경우 +출력
}
System.out.print(sum); //sum 출력
scanner.close();
}
}
for문은 다른언어에서 많이 사용해봐서 익숙하다 쓰는법도 똑같다.
- 반복문(While , do-while)
// while문
while(i<10){
System.out.print(i);
i++;
}
// do-while문
do {
System.out.print(s);
s++;
}while(s<123);
while문과 do-while문이다. 두 반복문의 차이점은 while문은 조건이 참인경우 실행되고 do-while문은 코드 내용이 한번 실행되고 조건이 참인지 확인한다.
- continue , break
System.out.println("정수를 5개 입력하세요.");
int sum=0;
for(int i=0; i<5; i++) {
int n = scanner.nextInt(); // 키보드에서 정수 입력
if(n<=0)
continue; // 양수가 아닌 경우 다음 반복으로 진행
else
sum += n; // 양수인 경우 덧셈
}
System.out.println("양수의 합은 " + sum);
↑continue문↓break문
while(true){
System.out.print("숫자를 입력하세요 :");
int num = scanner.nextInt();
if(num==-1) //입력된 숫자가 -1인경우 while문 탈출
break;
System.out.print("입력된 숫자 :"+num);
}
continue는 반복문이 중간에 끝나고 continue를 만나면 다시 반복을 이어나간다.
break문은 주로 무한반복문을 탈출 조건에 쓰인다.
- 중첩반복
for(int i=1; i<10; i++) { // 1단에서 9단
for(int j=1; j<10; j++) { // 각 단의 구구셈 출력
System.out.print(i + "*" + j + "=" + i*j); // 구구셈 출력
System.out.print('\t'); // 하나씩 탭으로 띄기
}
System.out.println(); // 한 단이 끝나면 다음 줄로 커서 이동
}
중첩반복은 말 그대로 반복문을 중첩해서 쓴다는 의미이다. 이는 매우 많이 쓰인다. 또 중첩반복의 대표적인 예로는 반복문이 있다.
- 배열
int intArray [];
int []intArray;
배열의 두가지 선언 방법이다. 두 선언모두 의미는 같다.
자바에서 배열은 레퍼런스 배열로 선언이된다.
//C언어 배열길이 찾기
int Array[5] = {1,2,3,4,5};
int size = sizeof(Array)/sizeof(int);
//JAVA 배열 길이 찾기
int Array[] = {1,2,3,4,5}; //[]안에 숫자를 쓰면 안된다.
int size = Array.length;
자바와 C언어의 배열 길이를 찾는 방법을 비교해 보았다.
C언어는 배열의 크기를 정수형의 크기로 나누어서 길이를 찾는 반면 자바에서는 배열 길이를 찾을 때 length라는 함수를 이용해서 찾는다. 정말 신세계를 본 느낌이었다.
배열을 응용하면
import java.util.Scanner;
public class ArrayAccess {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int intArray[] = new int[5]; // 배열 생성
int index=0;
int max=0; // 현재 가장 큰 수
System.out.println("양수 5개를 입력하세요.");
for(int i=0; i<5; i++) {
intArray[i] = scanner.nextInt(); // 입력받은 정수를 배열에 저장
if(intArray[i] >max) { // intArray[i]가 현재 가장 큰 수보다 크면
max = intArray[i]; // intArray[i]를 max로 변경
index = i;
}
}
System.out.println("가장 큰 수는 " + max + "입니다.");
System.out.println("인덱스 번호는 " + index + "입니다.");
scanner.close();
}
}
배열을 선언하고 입력된 숫자중에서 가장 큰값과 그 숫자의 인덱스 번호를 출력하는 프로그램이다.
- for-each
자바에서 처음 만나는 문법이였다. 정말 생소했고 낯설다..
int A[][][]= {{{1,2,3},{4,5,6}},{{7,8,9},{10,11,12}}};
// 2 2 3
//for-each문
for(int [][]i : A) { // i를 배열로 선언가능
for(int []j : i) {
for(int k : j) {
System.out.println(k);
}
}
}
//for문
for (int i=0; i<A.length;i++) {
for(int j=0;j<A[i].length;j++) {
for(int k=0; k<A[i][j].length;k++) {
System.out.println(A[i][j][k]);
}
}
}
↑3차원배열을 출력하는 방법을 for-each문과 for문으로 구현하였다.
for-each문은 for문을 개량하여 배열을 순차적으로 접근하는 것을 편하게 만든 문법이다.
i는 (0,1) , j는 (0,1) , k는 (0,1,2) 순으로 반복한다. →구구단 과 비슷하다.
for-each문을 for문으로 변형하여 쓴 코드가 위의 for문이다.
이로서 두 번째 튜터링을 마치게 되었다. 배열이 레퍼런스로 선언된다는 것과 for-each문을 이해하는 것이 많이 어려웠지만 계속해서 공부하다보니 이해할 수 있게 되었다. 뿌듯하다 :)
다음회차 튜터링도 기대가 된다.
'JAVA' 카테고리의 다른 글
[JAVA] 공부 6일차! (2021-07-26) (0) | 2021.07.28 |
---|---|
[JAVA] 공부 5일차! (2021-07-23) (0) | 2021.07.24 |
[JAVA] 공부 4일차! (2021-07-21) (0) | 2021.07.22 |
[JAVA] 공부 3일! (2021-07-16) (0) | 2021.07.17 |
[JAVA] 공부시작! (2021-07-09) (0) | 2021.07.14 |