728x90

 

for ~ each 반복문

 

어떠한 집합을 열어서 그 요소를 반환할때 사용

 

ex)

for(반환할 요소의 데이터타입과 변수명 : 배열) {
	실행할 문장;
}

 


예제 1.

<arr01과 dArr01의 요소 출력>

  • int[ ] arr01 = {1, 2, 3, 4, 5}
  • double[ ] dArr01 = {1, 2, 3, 4, 5}
int[] arr01 = {1, 2, 3, 4, 5};
double[] dArr01 = {1, 2, 3, 4, 5};

for (int i : arr01 ) { 
	System.out.print(i + " ");		
}
	System.out.println("");			//줄바꿈

for (double d : dArr01) {
	System.out.print(d + " ");		
}

[실행결과]

1 2 3 4 5 
1.0 2.0 3.0 4.0 5.0 

'JAVA' 카테고리의 다른 글

다중 배열 (MultiArray)  (0) 2021.07.08
자주 사용하는 단축키  (0) 2021.07.08
배열 (Array)  (0) 2021.07.06
Do While  (0) 2021.07.06
While  (0) 2021.07.06
728x90
배열 [ ]

 

동일(유사)한 타입의 데이터를 하나의 묶음 형태로 관리하기 위해 사용되는 자료구조

같은 타입의 변수가 100개정도 필요하다면 변수명을 만드는 데에도 많은 시간과 어려움이 따르는데 이를 극복하고자 사용됨

 

index(위치) = length(길이) - 1

 

객체는 기본적으로 속성과 메소드를 가지고 있지만 배열은 유일하게 속성만을 가짐

length(길이)는 배열에서의 속성을 나타냄 (length는 배열을 생성할 때만 선언)

객체의 속성과 메소드를 사용해서 배열을 관리

객체의 속성과 메소드 등을 호출할때는 .(점)을 이용

 

값을 지정하지 않았을 경우의 default값(초기값) :

int 0
double 0.0
char \0
boolean false(거짓)
객체 null

 

ex)

자료형[] array = new 자료형[길이];

 

int[] arr01 = new int[5];			//int타입의 길이가 5인 배열 선언 [0, 0, 0, 0, 0]
double[] dArr01 = new double[10];		//double타입의 길이가 10인 배열 선언 [0.0, 0.0, 0.0, ......]
char[] cArr01 = new char[15];			//char타입의 길이가 15인 배열을 선언 [ , , , , , , , ......]
boolean[] bArr01 = new boolean[15];		//boolean타입의 길이가 15인 배열을 선언 [false, false .....]

int[] arr02 = new int[] {1, 2, 3, 4, 5};	//선언과 동시에 값 넣어주기
int[] arr03 = {100, 200, 300, 400, 500};       

String addr = "서울시 강남구 삼성동";

arr01[0] = 10;					//arr01배열의 0번째 위치에 10을 대입 		
arr01[1] = 11;
arr01[2] = 12;
arr01[3] = 13;
arr01[4] = 14;

System.out.println(arr01[0]);			//arr01의 0번째 위치에 있는 값 출력 
System.out.println(arr01);			//arr01의 주소값 출력          
System.out.println(Arrays.toString(arr01));	//① arr01의 전체 값 출력 	
System.out.println(arr01.length);		//② arr01의 길이 출력
System.out.println(addr.length());		//③ 스페이스바(공백) 포함
System.out.println(addr.charAt(1));		//addr의 1번 index값
  • ① Arrays.toString( ) : ( )안의 배열의 값 전체 출력  (import 필수)
  • ②③ length를 출력할 때 배열에서는 괄호가 없지만 문자열에서는 괄호가 있다.

[실행결과]

10
[I@7637f22
[10, 11, 12, 13, 14]
5
11


예제 1.

<특정 값 대입하기>

  • 100 ~ 104까지의 정수 대입
  • 100 ~ 108까지의 짝수인 정수 대입
  • 104 ~ 100까지의 정수 대입
int[] arr01 = new int[5];

for (int i = 0; i < arr01.length; i++) {
	arr01[i] = 100 + i;
}
	
System.out.println(Arrays.toString(arr01));

for (int i = 0; i < arr01.length; i++) {
	arr01[i] = 100 + (2 * i);
}
		
System.out.println(Arrays.toString(arr01));

for (int i = 0; i < arr01.length; i++) {
	arr01[i] = 104 - i;
}
		
System.out.println(Arrays.toString(arr01));

[실행결과]

[100, 101, 102, 103, 104]
[100, 102, 104, 106, 108]
[104, 103, 102, 101, 100]

예제 2.

<length(길이)를 모르는 배열의 맨 마지막 위치(index)에 값 대입하기>

※ index = length - 1

int[] arr01 = new int[5];

arr01[arr01.length - 1] = 1000;

System.out.println(Arrays.toString(arr01));

[실행결과]

[0, 0, 0, 0, 1000]

예제 3.

<arr01의 짝수칸에 arr02의 값 순서대로 대입하기>

int[] arr01 = new int[10];                                // [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
int[] arr02 = {100, 200, 300, 400, 500};                  // [100, 200, 300, 400, 500]  

for (int i = 0; i < arr02.length; i++) {
	arr01[(i * 2) + 1] = arr02[i];                       
}
		
System.out.println(Arrays.toString(arr01));

[실행결과]

[0, 100, 0, 200, 0, 300, 0, 400, 0, 500]

예제 4.

<문자형 배열 >

※ 아스키코드 65 ~ 90 = A ~ Z

char[] cArr01 = new char[26];
		
char alpha = 'A';                        
for (int i = 0; i < cArr01.length; i++) {
	cArr01[i] = alpha++;
}

System.out.println(Arrays.toString(cArr01));	
System.out.println((char) (cArr01[2] + 3));		//(문자형) C(아스키코드67) + 3 = F(70) 
System.out.println((cArr01[2] + 3));			

char[]cat = {'C', 'A', 'T'};
for (int i = 0; i < cat.length; i++) {
	cat[i] = (char) (cat[i] + 3);			//캐스팅(char) 
}
System.out.println(Arrays.toString(cat));		//C, A, T에 각 3씩 더한 값

[실행결과]

[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z]
F
70
[F, D, W]

예제 5.

<배열 복사>

  • arr02의 값을 arr01에 복사하기
int[] arr01 = new int[] {11, 12, 13, 14, 15};
int[] arr02 = new int[] {21, 22, 23, 24, 25};

for (int i = 0; i < arr01.length; i++) {
	arr01[i] = arr02[i];
}
System.out.println(Arrays.toString(arr01));

[실행결과]

[21, 22, 23, 24, 25]

예제 6.

<String Array>

String apple = "apple";

char[] appleArray = new char[apple.length()];
	
for (int i = 0; i < appleArray.length; i++) {
	appleArray[i] = apple.charAt(i);
}

System.out.println(Arrays.toString(appleArray));		
System.out.println(appleArray);

[실행결과]

[a, p, p, l, e]
apple

예제 7.

<Lotto>

  • 1 ~ 45중 랜덤한 6개의 숫자 출력
  • 중복으로 나올 경우 다시 돌리기
int[] lotto = new int[6];
		
for (int i = 0; i < lotto.length; i++) { 		//6번 반복
	lotto[i] = (int) (Math.random() * 45 + 1); 	//1 ~ 45중의 랜덤한 숫자
	for (int j = 0; j < i; j++) {			//중복검사
		if(lotto[i] == lotto[j]) { 		//바로 전의 숫자와 같다면(중복된다면)
			i--; 				//다시 돌리기
			break; 				//탈출
		}		
	}						
}							
System.out.println(Arrays.toString(lotto));

[5회 실행결과]

[11, 33, 17, 21, 36, 9]
[15, 1, 10, 4, 18, 36]
[39, 24, 19, 12, 23, 15]
[44, 17, 35, 5, 1, 38]
[22, 12, 16, 42, 40, 34]

예제 7 - 1.

<Lotto>

  • 1 ~ 45중 랜덤한 6개의 숫자 출력
  • 중복제거 HashSet 사용
import java.util.HashSet;
import java.util.Set;

public class Lotto {
	public static void main(String[] args) {
    
		Set<Integer> lotto = new HashSet<Integer>();		//①
		
		while (lotto.size() < 6) { 				//② lotto의 크기가 6보다 작다면
			lotto.add((int) (Math.random() * 45 + 1));	//③
		}
		System.out.println(lotto);
    }
}
  • ① import 필수
  • ② size( ) 는 배열의 크기를 뜻한다.
  • ③ add는 set에 값을 집어넣을 때 사용한다.

[5회 실행결과]

[17, 21, 40, 41, 11, 45]
[32, 18, 37, 11, 29, 30]
[1, 3, 4, 27, 12, 13]
[1, 23, 43, 28, 12, 13]
[19, 36, 23, 40, 29, 14]

 

예제 8.

<FizzBuzz>

  • 1 ~ 20까지의 정수 중 3의배수는fizz 5의배수는buzz 15의배수는fizzbuzz를 출력
String[] fb = new String[20];			//문자열이 있기 떄문에 String로 선언
		
for (int i = 1; i <= fb.length ; i++) {		//20번 반복
	if (i % 3 == 0 && i % 5 == 0) {
		fb[i - 1] = "fizzbuzz";		//0번index의 값이 1부터 시작하기 때문에 fb[i-1]
	} else if(i % 5 == 0) {
		fb[i - 1] = "buzz";				
	} else if(i % 3 == 0) {
		fb[i - 1] = "fizz";
	}else {
		fb[i - 1] = String.valueOf(i);				
	}
}		
System.out.println(Arrays.toString(fb));

[실행결과]

[1, 2, fizz, 4, buzz, fizz, 7, 8, fizz, buzz, 11, fizz, 13, 14, fizzbuzz, 16, 17, fizz, 19, buzz]

'JAVA' 카테고리의 다른 글

자주 사용하는 단축키  (0) 2021.07.08
for each  (0) 2021.07.06
Do While  (0) 2021.07.06
While  (0) 2021.07.06
스위치 (Switch)  (0) 2021.07.06
728x90
do ~ while 반복문

 

while과 다르게 한 번은 실행하고 다음에 오는 조건문에 따라서 반복하게끔 하는 반복문

(while문은 조건식이 거짓이면 한 번도 실행하지 않지만, do ~ while문은 무조건 한 번은 실행하는 형태를 가짐)

 

ex)

do {
    조건식이 참일 때 실행할 문장;
} while (조건식);

 


예제 1.

<국어, 수학, 영어 시험의 총점, 평균, 등급 구하기>

  • do ~ while문, switch ~ case문 사용
  • 등급 = A : 100 ~ 90 , B : 89 ~ 80, C : 79 ~ 70, 나머지 F
Scanner sc = new Scanner(System.in);
		
int kore, math, engl, total;
double avg;
char grade;
		
do {
	System.out.println("국어 점수를 입력하세요.");
	kore = sc.nextInt();
} while (kore < 0 || kore > 100);
		
do {
	System.out.println("수학 점수를 입력하세요.");
	math = sc.nextInt();
} while (math < 0 || math > 100);
		
do {
	System.out.println("영어 점수를 입력하세요.");
	engl = sc.nextInt();
} while (engl < 0 || engl > 100);
		
total = kore + math + engl;
avg = total / 3.0;                //avg가 double로 선언되었기 때문에 3이 아닌 3.0

switch ((int) avg / 10) {
case 10:
case 9:
	grade = 'A';
	break;
		
case 8:
	grade = 'B';
	break;
			
case 7:
	grade = 'C';
	break;
			
default:
	grade = 'F';
	break;
}
		
System.out.println("총점은 " + total + "점 입니다.");
System.out.println("평균은 " + avg + "점 입니다.");
System.out.println("등급은 " + grade + " 입니다");

[실행결과]

국어 점수를 입력하세요.
95
수학 점수를 입력하세요.
88
영어 점수를 입력하세요.
90
총점은 273점 입니다.
평균은 91.0점 입니다.
등급은 A 입니다

'JAVA' 카테고리의 다른 글

for each  (0) 2021.07.06
배열 (Array)  (0) 2021.07.06
While  (0) 2021.07.06
스위치 (Switch)  (0) 2021.07.06
스캐너 (Scanner)  (0) 2021.07.06
728x90
무한 반복문

 

무한으로 반복을 실행하다가 특정 조건이 되면 탈출

주로 채팅이나 게임 등 무한 반복 로직에서 활용된다.

 

ex)

while(조건식) {
    조건식이 참일 경우 계속 실행할 문장;
}

 

 


예제 1.

<특정 횟수만큼 반복>

  • 3회까지 반복하는 while문
int count = 0;

while (count < 3) {        //3회까지 반복
	System.out.println("while문 실행중입니다.");
	count++;
}

[실행결과]

while문 실행중입니다.
while문 실행중입니다.
while문 실행중입니다.

예제 2.

<숫자맞추기 게임>

  • 컴퓨터가 1이상 100 미만의 숫자를 랜덤으로 지정
  • 사용자가 숫자를 입력하면 UP / DOWN을 출력하고, 일치한다면 "축하합니다" 라고 하면서 출력후 종료
  • 몇 번 시도했는지 출력하기
Scanner sc = new Scanner(System.in);

int com = (int) (Math.random() * 99 + 1);
int count = 0;
	
while (true) {
	System.out.println("숫자를 입력하세요.");

	int input = sc.nextInt();

	if (input < com) {
		System.out.println("Up");
	}else if(input > com) {
		System.out.println("Down");
	}else {
		System.out.println("축하합니다.");
		break;
	}
	count++;
}
System.out.println(count + "번 시도하였습니다.");		//몇 번 시도했는지 출력

[실행결과]

숫자를 입력하세요.
50
Down
숫자를 입력하세요.
20
Up
숫자를 입력하세요.
40
Up
숫자를 입력하세요.
45
Up
숫자를 입력하세요.
48
Down
숫자를 입력하세요.
47
Down
숫자를 입력하세요.
46
축하합니다.
6번 시도하였습니다.

'JAVA' 카테고리의 다른 글

배열 (Array)  (0) 2021.07.06
Do While  (0) 2021.07.06
스위치 (Switch)  (0) 2021.07.06
스캐너 (Scanner)  (0) 2021.07.06
for  (0) 2021.07.06

+ Recent posts