본문 바로가기
개발 공부 Today I Learned

[국비 15일차 TIL] 자바 반복문 while, do-while, switch, 동적가변배열

by 개발자신입 2023. 12. 11.
반응형

자바 반복문

- while문

조건식이 거짓이라면 반복 실행 안함

 

 

/*

점수 : 0~100

사용자가 입력하는 숫자가 점수 범위에 들어가는지

while문으로 프로그램 만들기

*/

 
import java.util.Scanner;

public class While04 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		int score;
		
		System.out.println("점수를 입력하세요. (0~100)");
		score = sc.nextInt();
		
		while (score > 100 || score < 0) {
			System.out.println("올바른 숫자가 아닙니다. 다시 입력해주세요.");
			score = sc.nextInt();
			}
		sc.close();
		
	}	

}
 
	public static void main(String[] args) {
		
		// 스캐너 객체 생성
		
		Scanner sc = new Scanner(System.in);
		int input;
		
		System.out.println("1.가위 \t 2.바위 \t 3.보");
		input = sc.nextInt();
		
		while(input > 3 || input < 1) {
			System.out.println("다시 입력해주세요.");
			input = sc.nextInt();
		}
		sc.close();
	}

}
 

 

- do~while문

 

 

/*

* while문과 다르게 무조건 한번은 실행하고  조건에 따라 반복여부를 결정

*

* while문은 조건식이 거짓이라면 반복 실행 안함

* do-while문은 거짓이라도무조건 한번은 반복 실행

*/

 

 
	public static void main(String[] args) {

		// 1,2,3 외에는 false

		Scanner sc1 = new Scanner(System.in);
		int input1;
		
		System.out.println("숫자를 입력하세요.");
		input1 = sc1.nextInt();
		
		do {
			System.out.println("1.가위 \t2.바위 \t3.보");
			input1 = sc1.nextInt();
		} while (input1 > 3 || input1 < 1);
	}
}

 

 

 

 

 


- 반복문 비교

  • for
  • while
  • do-while
 
		for (int i = 0; i < 10; i++) {
			// true면 문장 실행
		}
		
        
		for (String string : args) {	// 데이터 구성요소 : 집합
			
		}
		
        
		while (/*true*/) { 	 // 조건식이 true라면 실행
			
		}
		
        
		do {
			System.out.println("true면 실행");
		} while (/*조건식*/); 	// 구문을 먼저 실행하고 조건을 검사
 

Integer.toBinaryString(); 숫자를 2진수로 바꿔줌.

 
		int number = 10;  // 10 = 1010
		
		while(number >=  1) {		// 0, 1 남을때까지 반복
			
			// 2로 나눴을 때 나머지 값 출력
			System.out.println(number % 2);
			
			// number값 변경 (몫 저장)
			number /= 2;
			
		}	// 반복 // 나온 값을 아래에서부터 읽음.
 
 
public class Test03 {
	public static void main(String[] args) {

		int i = 0;
		int sum = 0;

		while (i < 10) {
			i++;
			if (i % 2 == 1) { // 0짝 1홀 // 홀수는 걸러짐
				continue;
			}
			sum += i;  // 짝수만 남음 2+4+6+8+10
		}
		System.out.println(sum);
	}
}
 

 

** printf 에서만 사용 가능
 
지시자 내용
%b boolean
%d 정수
%f 실수
%o 8진수
%x 16진수
%c 문자 char
%s 문자열 string
%n 줄바꿈
 
 
package dec11;

import java.util.Scanner;

public class Print {
	public static void main(String[] args) {
		
		
		System.out.print("");
		System.out.println("");
//		System.out.printf("출력서식", 출력내용); // foramt 형식을 가진 출력문

		System.out.print("print출력\n\r");
		System.out.println("ln이 있는 문장");
		
		String name = "홍길동";
		System.out.printf("저는 %s입니다.\n\r", name); // %s = 문자열 String 		
		System.out.printf("제 나이는 %d입니다.\n", 35);  // %d = 정수
		System.out.printf("제 나이는 %f입니다.\n", 35.0);  // %d = 실수
		
		System.out.printf("%d를 8진수로 변환하면 %o \n", 8,8);  // 8진수
		// 0 1 2 3 4 5 6 7  
		System.out.printf("%d를 16진수로 변환하면 %x %n", 16,16); // 16진수 
		// 0 1 2 3 4 5 6 7 8 9 a b c d e f 10
		
		double PI = 3.1415926535;
		System.out.printf("PI는 %f%n", PI);     
		// PI는 3.141593
		System.out.printf("PI는 %.10f%n", PI);  
		// PI는 3.1415926535 (%.10f) %정수.소수점 10번째까지
		
		System.out.printf("PI는 %d", 5); 
		System.out.printf("PI는 %5d %n", 130); // 앞에 0을 채워줌, 0이 없으면 공백
		
		System.out.printf("%s %n", name);
		System.out.printf("%5s %n", name); // 오른쪽으로 붙이고, 앞에 칸을 채워서 총 5칸으로 출력
		System.out.printf("%-5s %n", name); // 왼쪽으로 붙이고, 앞에 칸을 채워서 총 5칸으로 출력
		
		name = "홍길동입니다.";
		System.out.printf("글자수 : %d %n", name.length());
		System.out.printf("%.5s %n", name); // 글자 수를 5개까지만 출력
		System.out.printf("%6.5s %n", name); // 6칸을 만들고 글자 수는 5개까지만 출력
		
		
		// 아래에서 만든 Scanner 출력
		Scanner ret = add();	
		
		byte one = 10;
		int two = one;	  //프로모션
		byte three = (byte) two; // 캐스트
		
	}
	public static Scanner add() {
		Scanner sc = new Scanner(System.in);
		return sc;
	}
}
 

- Swtich

 
  • if, else if, else를 다르게 표현한 문장
  • 각 조건을 case의 값과 비교해서 결과가 true일 경우 실행.
  • 조건의 값은 수치형일 경우 int 이하만 가능
  • 문자열도 비교 가능
 
public class Switch01 {

	public static void main(String[] args) {
		
		int key = 5;
		
		switch (key) {
		case 4:
			System.out.println("key는 4입니다.");
			break;
		case 5:
			System.out.println("5입니다.");
			break;
		case 6:
			System.out.println("6입니다");
			break;
			
		default:
			System.out.println("4,5,6이 아닙니다.");
			break;
		}
	}

}
 

 

 

 

 

 


정보처리기사 실기 문제

 
public class Switch_01 {
	 public static void main(String[] args) {
		
		 int i = 3, k = 1;
		 
		 switch(i) {
		 case 1 : k += 1;
		 case 2 : k++;
		 case 3 : k = 0;
		 case 4 : k += 3;
		 case 5 : k -= 10;
			k--;
		 }
		 System.out.println(k);
	}
}
답 : -8
break가 없기 때문에 case 3부터 쭉 내려오면서 계산하면 -8이 나옴.

 


public class Switch02 {
	public static void main(String[] args) {

		// 학점 100~90 = A, ~80 = B, ~70 = C, ~60 = D, 나머지 F
		
		int score = 75;
		char hakzum;
		
		if(score >= 90) {
			hakzum = 'A';
		} else if (score >= 80) {
			hakzum = 'B';
		} else if (score >= 70) {
			hakzum = 'C';
		} else if (score >= 60) {
			hakzum = 'D';
		} else {
			hakzum = 'F';
		}
		System.out.println(hakzum);
		
//////////////////////////////////////////////////////

		switch (score / 10) {
		case 10:
		case 9:
			hakzum = 'A';
			break;						
		case 8:
			hakzum = 'B';
			break;			
		case 7:
			hakzum = 'C';
			break;			
		case 6:
			hakzum = 'D';
			break;			
		default:
			hakzum = 'F';
			break;
		}
		System.out.println(hakzum);
	}
}
 

- 동적 가변배열

  • 배열의 길이를 동적으로 생성한다라는 뜻
  • 필요시에 길이를 생성함
  • 동적가변배열이 아닌 것은 처음부터 배열의 길이를 입력(초기화)해서 사용
  • 동적가변배열은 값대입 전 필요할 때 길이를 생성해서 입력, 값대입을 함.
  • 필요한 만큼 만들어서 쓰는게 가능.
 
public class DynamicArray01 {

	public static void main(String[] args) {
		
		int arr1[][] = new int[3][3];
		int arr2[][] = new int[3][]; // 다이나믹 어레이
		
		arr2[0] = new int[3];
		arr2[1] = new int[6];
		arr2[2] = new int[12];
		
		for (int i = 0; i < arr2.length; i++) {
			for (int j = 0; j < arr2[i].length; j++) {
				System.out.printf("%2d", arr2[i][j]);
			}
			System.out.printf("%n");
		}
		
//		for (int[] is : arr2) { 	// 0 1 2
//			for (int i : is) {		// 0 1 2
//				System.out.printf("%2d",i); // 정수로 2칸 차지하도록
//			}
//			System.out.printf("%n");
	}
}
 

- 10줄짜리 반쪽 트리

 

package dec11;

import java.util.Iterator;

public class DynamicArray02 {
	public static void main(String[] args) {

		char stars[][] = new char[10][]; // 10줄

		for (int i = 0; i < stars.length; i++) { // 바깥쪽 10번 반복
			stars[i] = new char[i + 1]; 
			for (int j = 0; j < stars[i].length; j++) {
				stars[i][j] = '*';
				System.out.printf("%c",stars[i][j]);
			}
			System.out.printf("%n");
		}

	}
}

- 동적 가변 배열 = 톱니바퀴 배열

 
package dec11;

import java.util.Random;

public class DynamicArray03 {
	public static void main(String[] args) {
		
		char da[][] = new char[10][];
		
		// random 사용 (2~15사이의 숫자)
		
		Random random = new Random();
		
		
		for (int i = 0; i < da.length; i++) {
			da[i] = new char[(int)(Math.random() * 14) +2];
			for (int j = 0; j < da[i].length; j++) {
				da[i][j] = '*';
				System.out.printf("%c", da[i][j]);
			}
			System.out.printf("%n");
		}
	}
}
 

 

반응형

댓글