01. 반복문 (for, while, do-while)
02. 배열
- 1차원 배열
- 2차원 배열
- 비정방형 배열
- 메소드에서 리턴하는 배열
# 반복문
º 자바 반복문의 종류
- for 문
- while 문
- do while 문
# for 문의 구성
for ( 초기문; 조건식; 반복 후 작업) {
.. 작업문 ..
}
# for 문
º for 문 속에서 변수를 선언할 수 있다. 이 변수는 for 문 안에서만 유효하다.
º 조건식이 true이거나 비어 있는 경우는 무한 반복 (infinite loop)이 된다. 루프를 벗어나기 위해 break문을 쓸 수 있다.
º '반복 후 작업'할 일이 여러 개 있는 경우는 콤마(,)로 분리하여 쓸 수 있다.
# while 문의 구성
while (조건식) {
.. 작업문 ..
}
# while 문
º 반복 조건이 true이면 반복, false이면 반복 종료
º 반복 조건이 없으면 컴파일 오류
º 처음부터 반복조건을 통과한 후 작업문 수행
º 괄호 속이 true인 경우는 무한 반복을 뜻한다. while문을 벗어나려 할 때는 break문을 사용하면 된다.
# do-while 문의 구성
do {
.. 작업문 ..
} while(조건식);
# do-while 문
º 무조건 최소 한번 작업문 실행, 한 번 실행한 후에 조건 점검
º 반복 조건이 true이면 반복, false이면 반복 종료
º 반복 조건이 없으면 컴파일 오류
º do-while을 벗어나기 위해서는 do-while 문 안에서 break 문을 사용하면 된다.
ex) 입력된 수의 평균 구하기 (while의 조건)
import java.util.Scanner;
public class WhileSample {
public static void main (String[] args) {
Scanner rd = new Scanner(System.in);
int n = 0;
double sum = 0;
int i = 0;
while((i=rd.nextInt()) !=0) {
sum += i;
n++;
}
System.out.println("입력된 수의 개수는 " + n + "개이며 평균은 " + sum / n + "입니다.");
}
}
ex) 입력된 숫자 개수 세기 (while, break)
import java.util.Scanner;
public class BreakSample {
public static void main (String[] args) {
Scanner in = new Scanner(System.in);
int num = 0;
while (true) {
if(in.nextInt() == -1)
break;
num ++ ;
}
System.out.println("입력된 숫자의 개수는 " + num);
}
}
# continue 문
º 반복문을 빠져 나가지 않으면서 다음 반복으로 진행
ex) 5개의 정수를 입력 받고 그 중 양수들만 합하여 출력하는 프로그램
import java.util.Scanner;
public class ContinueEx {
public static void main (String[] args) {
Scanner scanner = new Scanner(System.in);
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);
scanner.close();
}
}
# break 문
º 반복문 하나를 완전히 빠져 나갈 때 사용
- 하나의 반복문만 벗어남
- 중첩 반복의 경우 안쪽 반복문의 break문이 실행되면 안쪽 반복문만 벗어남
# 배열 (Array)
º 동일한 종류의 데이터를 순차적으로 저장하는 공간
º 배열 원소의 인덱스는 배열의 시작 위치에서부터 데이터가 저장되어 있는 곳의 상대적인 위치를 나타냄
º 인덱스는 0부터 시작
# 1차원 배열의 선언
º 배열 선언과 배열 생성의 두 단계가 필요하다.
º 배열 선언
int intArray[];
char charArray[];
float floatArray[];
º 배열 생성
intArray = new int[10];
charArray = new char[20];
floatArray = new float[5];
º 배열 선언과 동시에 생성
int intArray[ ] = new int[10];
char charArray[ ] = new char[20];
float floatArray[ ] = new float[5];
º 배열 선언과 초기화
int intArray[ ] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
# 배열 선언과 생성의 차이
(1) 배열에 대한 레퍼런스 변수 intArray 선언
(2) 배열 생성
# 배열 참조
º 배열 생성
int intArray[] = new int[5];
int myArray[] = intArray;
º 배열 원소에 대입
intArray[1] = 2;
myArray[1] = 6;
- 여러 레퍼런스가 하나의 배열을 참조할 수 있다.
ex) 배열에 입력받은 5개의 수 중에서 가장 큰 수 찾기
import java.util.Scanner;
public class ArrayAccess {
public static void main (String[] args) {
Scanner in = new Scanner(System.in);
int intArray[] = new int[5];
int max = 0;
for(int i = 0; i < 5; i++) {
intArray[i] = in.nextInt();
if(intArray[i] > max)
max = intArray[i];
}
System.out.print("입력된 수에서 가장 큰 수는 " + max + "입니다.");
}
}
# 배열의 크기와 인덱스
º 배열 인덱스
- 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1)임
- 인덱스는 정수 타입만 가능
º 배열의 크기
- 배열의 크기는 배열 레퍼런스 변수를 선언할 때 결정되지 않음
- 배열의 크기는 배열 생성 시에 결정되며, 나중에 바꿀 수 없음
- 배열의 크기는 배열의 length라는 필드에 저장
int size = intArray.length;
ex) 배열의 length 필드를 이용하여 배열 크기만큼 키보드에서 정수를 입력받고 평균을 구하는 프로그램
import java.util.Scanner;
public class ArrayLength {
public static void main (String[] args) {
Scanner in = new Scanner(System.in);
int intArray[] = new int[5];
double sum = 0;
for(int i =0; i<intArry.length; i++)
intArray[i] = in.nextInt();
for(int i = 0; i<intArray.length; i++) {
sum += intArray[i];
}
System.out.print("배열 원소의 평균은 " + sum/intArray.length + "입니다.");
}
}
# 배열과 for-each 문
º for-each 문 : 배열(array)이나 열거형 변수(enumeration)의 각 원소를 순차적으로 접근하는데 유용한 for 문
public class ForeachEx {
enum Week { 월, 화, 수, 목, 금, 토, 일}
public class void main(String[] args) {
int[] num = {1, 2, 3, 4, 5};
String names[] = {"사과", "배", "바나나"};
int sum = 0;
for (int k : num)
sum += k;
System.out.println("합은 " + sum);
for (String s : names)
System.out.print(s + " ");
System.out.println();
for (Week day : Week.values())
System.out.print(day + "요일 ");
System.out.println();
}
}
# 2차원 배열의 length 필드
int i[ ][ ] = new int[2][5];
int size1 = i.length; //2
int size2 = i[0].length; //5
º 2차원 배열의 length
- i.length -> 2차원 배열의 행의 개수로서 2
- i[n].length 는 n번째 행의 열의 개수
i[0].length -> 0번째 행의 열의 개수로서 5
i[1].length -> 1번째 행의 열의 개수로서 역시 5
ex) 한 회사의 지난 3년간 분기별 매출의 총핵과 연평균 매출을 구하는 프로그램
public class SalesRevenue {
public static void main (String[] args) {
int intArray[][] = {{90,90,110,110}, {120,110,100,110}, {120,140,130,150}};
double sum = 0;
for (int i = 0; i < intArray.length; i++)
for (int j = 0; j < intArray[i].length; j++)
sum += intArray[i][j];
System.out.println("지난 3년간 매출 총액은 " + sum + "이며 연평균 매출은 " + sum/intArray.length + "입니다.");
}
}
# 비정방형 배열
º 정방형 배열
- 각 행의 열의 개수가 같은 배열
int i[][];
i = new int[4][4];
º 비정방형 배열
- 각 행의 열의 개수가 다른 배열
int i[][];
i = new int [4][];
i[0] = new int [1];
i[1] = new int [2];
i[2] = new int [3];
i[3] = new int [4];
º 비정방형 배열의 length
- i.length -> 2차원 배열의 행의 개수 (4)
- i[n].length는 n번째 행의 열의 개수
i[0].length -> 0번째 행의 열의 개수 (1)
i[1].length -> 1번째 행의 열의 개수 (2)
i[2].length -> 2번째 행의 열의 개수 (3)
i[3].length -> 3번째 행의 열의 개수 (4)
public class IrregularArray {
public static void main (String[] args) {
int a = 0;
int intArray[][] = new int[4][];
intArray[0] = new int[3];
intArray[1] = new int[2];
intArray[2] = new int[3];
intArray[3] = new int[2];
for (int i = 0; i < intArray.length; i++)
for (int j = 0; j < intArray[i].length; j++)
intArray[i][j] = (i+1)*10 + j;
for (int i = 0; i < intArray.length; i++) {
for (int j = 0; j <intArray[i].length; j++)
System.out.print(intArray[i][j]+ " ");
System.out.println();
}
}
}
# 메소드에서 배열 리턴
º 메소드가 리턴하는 배열
- 메소드가 리턴하는 배열의 타입과 차원은 리턴받는 배열 레퍼런스의 타입과 차원에 일치해야 함.
- 리턴 타입에 배열의 크기를 지정하지 않음.
int[] makeArray() {
int temp[] = new int[4];
return temp;
}
ex) 배열을 생성하고 각 원소 값을 출력하는 프로그램을 작성하시오, 배열 생성은 배열을 생성하여 각 원소의 인덱스 값으로 초기화하여 반환하는 메소드를 이용한다.
public class ReturnArray {
static int[] makeArray() {
int temp[] = new int[4];
for (int i=0; i<temp.length; i++)
temp[i] = i;
return temp;
}
public static void main (String[] args) {
int intArray [];
intArray = makeArray();
for (int i=0; i<intArray.length; i++)
System.out.println(intArray[i]);
}
}
'JAVA > 자바 이론' 카테고리의 다른 글
Java | 4-1 클래스와 객체 (0) | 2021.04.14 |
---|---|
Java | 3-2 예외 처리 (0) | 2021.04.12 |
Java | 2-2 자바 기본 프로그래밍 (0) | 2021.04.11 |
Java | 2-1 자바 기본 프로그래밍 (0) | 2021.04.11 |
Java | 1-2 자바 기본 프로그래밍 (0) | 2021.04.11 |