반응형
자바 반복문
- 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");
}
}
}
반응형
'개발 공부 Today I Learned' 카테고리의 다른 글
[국비 17일차 TIL] 자바 String 메소드 (0) | 2023.12.13 |
---|---|
[국비 16일차 TIL] JAVA 배열 복사 / 이중for문 / String (0) | 2023.12.12 |
[국비 14일차 TIL] JAVA 2차원 배열 (1) | 2023.12.08 |
[국비 13일차 TIL] JAVA 배열 연습 (2) | 2023.12.07 |
[국비 12일차 TIL] 자바 반복문 for문 (1) | 2023.12.06 |
댓글