JAVA

[JAVA] 공부 2일!! (2021-07-14)

HJ39 2021. 7. 15. 20:33

두번째 튜터링 시간에는 반복문, 배열을 배웠다. 대부분 다른 언어에서 사용해봐서 익숙 했지만 for-each문을 처음 만나서 결과값을 예측하기가 매우 어려웠다.

반복문(For)

반복문(While , do-while)

continue , break

중첩 반복

배열

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