while 로 점수 입력받기, 범위를 벗어나면 다시 입력받기
public static void main(String[] args) {
boolean run = true;
int score;
Scanner sc = new Scanner(System.in);
while (run) {
System.out.println("점수를 입력하세요. ( 0 ~ 100 )");
System.out.print("입력 : ");
score = sc.nextInt();
if (score < 0 || score > 100){
System.out.println("올바른 숫자가 아닙니다. 다시 입력해주세요");
continue;
}
run = false;
}
System.out.println("프로그램 종료");
}
가위바위보를 while 로 적어보기
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("1.가위, 2.바위, 3.보");
int input = sc.nextInt();
while (input > 3 || input < 1) {
System.out.println("다시 입력해주세요.");
input = sc.nextInt();
}
sc.close();
}
do - while
// do ~ while
/*
while 문과 다르게 무조건 한번은 실행하고 그 후 조건에 따라 반복여부를 결정
while 문은 조건식이 거짓이라면 반복을 실행하지 않음
do ~ while 문은 거짓이라도 무조건 한 번은 반복을 도는 형태.
*/
public class DoWhile {
public static void main(String[] args) {
do {
System.out.println("실행합니다."); // 무조건 한번은 실행
} while (false); // 이후 조건에 따라 반복 실행여부 판단
Scanner sc = new Scanner(System.in);
int score;
do {
System.out.println("점수 입력해주세요. ( 0 ~ 100 )");
score = sc.nextInt();
} while (score > 100 || score < 0);
sc.close();
}
가위바위보 입력을 do while 문으로 변경해보기
int input;
do {
System.out.println("1.가위, 2.바위, 3.보");
System.out.print("입력 : ");
input = sc.nextInt();
} while (input < 1 || input > 3);
2진법 만드는 반복문 만들기
int number = 10;
String s = "";
while (number > 0) {
s += number % 2;
number /= 2;
}
System.out.println(s); // 0101 출력
해당 반복문으로 2진법을 만들면 거꾸로 출력됨
String str = "";
for (int i = s.length() - 1; i >= 0; i--) {
str += s.charAt(i);
}
System.out.println(str); // 1010 출력
다른 반복문으로 다시 거꾸로 뒤집어 줌
정보처리기사 기출 문제
public static void main(String[] args) {
int i = 0;
int sum = 0;
while (i < 10) {
i++;
if (i % 2 == 1) {
continue;
}
sum += i;
}
System.out.println(sum); // 30
}
암산해보았을 때 20 이 출력될 줄 알았는데 30 출력
i++; 문장이 가장 앞줄에 있다는 것이 체크포인트, 0 ~ 9 를 도는 것처럼 보이지만
1 ~ 10 을 도는 반복문
print 예제
public static void main(String[] args) {
System.out.println(""); // "" 안의 내용을 출력하고 엔터
System.out.print(""); // "" 안의 내용을 출력
System.out.print("여기까지가 print 출력\r\n");
System.out.println("ln이 있는 것");
System.out.printf("출력 서식", 출력 내용);
String name = "홍길동";
System.out.printf("저는 %s 입니다.%n", name);
System.out.printf("제 나이는 %d 입니다.%n", 50);
System.out.printf("제 나이는 %4.1f 입니다.%n", 35.0);
System.out.printf("%d을(를) 8진수로 변환하면 %o%n", 10, 10);
// 0 1 2 3 4 5 6 7
System.out.printf("%d을(를) 16진수로 변환하면 %x%n", 15, 15);
// 0 1 2 3 4 5 6 7 8 9 a b c d e f
/*
%b : boolean
%d : 정수
%f : 실수
%o : 8진법
%x : 16진법
%c : char
%s : String
%n : 줄바꿈
*/
double pi = 3.1415926535;
System.out.printf("pi는 %f%n", pi);
System.out.printf("pi는 %.10f%n", pi); // 소숫점 10자리 출력 요청
System.out.printf("%05d%n", 5); // 총 5자리 출력, 빈칸은 0 으로 채움
System.out.printf("%s%n", name); // 홍길동
System.out.printf("%5s%n", name); // __홍길동, _ 은 빈칸
System.out.printf("%-5s%n", name); // 홍길동__, _ 은 빈칸
name = "홍길동입니다."; // 7
System.out.printf("글자수 : %d%n", name.length()); // 홍길동입니다. , . 까지 해서 7글자
System.out.printf("%.5s%n", name); // 홍길동입니, 5글자 까지만 출력
System.out.printf("%6.5s%n", name); // _홍길동입니, 총 6칸 중 name 5글자 까지만 출력
}
switch case
public static void main(String[] args) {
// Switch 스위치
/*
if, else if, else 를 다르게 표현한 문장
각 조건은 case 의 값과 비교해서 결과가 true 일 경우 조건 수행
조건의 값은 수치형일 경우 int 이하만 가능
문자열도 비교 가능
*/
int key = 4;
switch (key) {
case 4:
System.out.println("key : 4 입니다.");
break;
case 5:
System.out.println("key : 5 입니다.");
break;
case 6:
System.out.println("key : 6 입니다.");
break;
default:
System.out.println("4, 5, 6 이 아닙니다.");
break;
}
}
만약 break 가 없다면 지정된 case 부터 switch 문의 끝까지 출력
if 문 switch 로 바꾸어보기
public static void main(String[] args) {
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) { // 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 static void main(String[] args) {
int[][] arr1 = new int[3][3];
int[][] arr2 = new int[3][];
arr2[0] = new int[3]; // arr2[0] 의 배열은 총 3칸
arr2[1] = new int[6]; // arr2[1] 의 배열은 총 6칸
arr2[2] = new int[12]; // arr2[2] 의 배열은 총 12칸
for (int[] is : arr2) {
for (int i : is) {
System.out.printf("%2d", i); // 0 0 0, 0 0 0 0 0 0 0, 0 0 0 0 0 0 0 0 0 0 0 0 0 0
}
System.out.println();
}
}
// 2중 for 문으로 해보기
for (int i = 0; i < arr2.length; i++) {
for (int j = 0; j < arr2[i].length; j++) {
System.out.print(arr2[i][j]);
}
System.out.println();
}
동적 배열 별찍기
public static void main(String[] args) {
char[][] stars = new char[10][];
for (int i = 0; i < stars.length; i++) {
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]); // char 형은 %c 로 문자 출력, 여기서는 %s 도 가능
}
System.out.println();
}
}
코딩도장 홈페이지 문자열 압축하기
public static void main(String[] args) {
String a = "aaabbcccccca";
int count = 1;
String answer = "";
char[] cArr = new char[a.length()];
for (int i = 0; i < a.length(); i++) {
cArr[i] = a.charAt(i); // 먼저 배열로 값 저장
}
for (int i = 1; i < cArr.length; i++) {
if (cArr[i-1] == cArr[i]) { // 배열 i - 1 글자와 i 번째 글자가 같으면 count 증가
count ++;
} else if (cArr[i-1] != cArr[i]) { // 배열 글자가 다르면 answer 문자열에 문자와 값 저장
answer += Character.toString(cArr[i-1]) + count;
count = 1;
}
}
answer += Character.toString(cArr[cArr.length - 1]) + count; // 마지막에 배열 글자 저장 및 값 저장
System.out.println(answer);
}
}
'JAVA' 카테고리의 다른 글
231213 Java (0) | 2023.12.13 |
---|---|
231212 Java (0) | 2023.12.12 |
231208 Java (0) | 2023.12.08 |
231207 Java (0) | 2023.12.07 |
231206 Java (2) | 2023.12.06 |