for 문
표현식
for((1)초기식; (2)조건식; (3)증감식){
.................
}
로직순서
- 1 회전 : 초기식(1) 확인 → 조건식 확인 (2) true면 { }안 내용 1회 실행, false면 반복문 실행하지 않음 초기식에서 변수를 선언하고 조건식으로 넘어감
- 2 회전 : 증감(3)연산 → 조건식(2) 확인 true면 { }안 내용 1회 실행 false면 반복문 실행하지 않음 변수가 언제까지 실행되고 언제 끝낼지 결정하는 증감식을 넣어줌
- 2회전 이상부터는 2 → 3 확인 후 조건식이 false가 나올 때까지 { } 1번씩 실행
✔ 1~5까지의 반복문 수행
public class A_for{
public static void main(String[] args){
for(int i = 1; i <= 5; i++){
System.out.println(i + “번째 반복문 수행중...”);
}
}
}
👉 실행결과
1번째 반복문 수행중...
2번째 반복문 수행중...
3번째 반복문 수행중...
4번째 반복문 수행중...
5번째 반복문 수행중...
✔ 문자열 하나를 입력 받아 각 문자를 출력
public void testFor1() {
Scanner sc = new Scanner(System.in);
System.out.print("문자열을 하나 입력하세요 : ");
String str = sc.nextLine();
for(int i = 0; i <= str.length() - 1; i++) {
System.out.println(str.charAt(i));
}
}
👉 실행결과
문자열을 하나 입력하세요 : notion
n
o
t
i
o
n
✔ 정수 하나를 입력 받아 그 수가 양수일 때만 그 수의 구구단을 출력하게 하고, 양수가 아니면 "반드시 1~9 사이의 양수를 입력해야 합니다." 출력
public void testFor2() {
Scanner sc = new Scanner(System.in);
System.out.print("1~9사이의 양수를 하나 입력하세요 : ");
int dan = sc.nextInt();
if(dan > 0 && dan < 10) {
// System.out.println(dan + " * 1 = " + (dan * 1));
// System.out.println(dan + " * 2 = " + (dan * 2));
// System.out.println(dan + " * 3 = " + (dan * 3));
// System.out.println(dan + " * 4 = " + (dan * 4));
// System.out.println(dan + " * 5 = " + (dan * 5));
// System.out.println(dan + " * 6 = " + (dan * 6));
// System.out.println(dan + " * 7 = " + (dan * 7));
// System.out.println(dan + " * 8 = " + (dan * 8));
// System.out.println(dan + " * 9 = " + (dan * 9));
//
for(int su = 1; su <10; su++) {
System.out.println(dan + " * " + su + " = " + (dan * su));
}
} else {
System.out.println("반드시 1~9 사이의 양수를 입력해야 합니다.");
}
}
👉 실행결과
1~9사이의 양수를 하나 입력하세요 : 8
8 * 1 = 8
8 * 2 = 16
8 * 3 = 24
8 * 4 = 32
8 * 5 = 40
8 * 6 = 48
8 * 7 = 56
8 * 8 = 64
8 * 9 = 72
✔ 1부터 100 사이의 임의의 난수까지의 정수들의 합계를 구하여 출력 예) 난수가 10인 경우 1+2+...+9+10의 합계가 55가 출력되어야 함
public void testFor3() {
int random = (int)(Math.random()*100)+1;
int sum = 0;
for(int i = 1; i <= random; i++) {
sum += i;
}
System.out.println("1부터 " + random + "까지의 합은 : " + sum);
}
👉실행 결과
1부터 8까지의 합은 : 36
✔ 두 개의 정수를 입력받아 작은 수에서 큰 수까지의 합을 구하세요
public void testFor4() {
Scanner sc = new Scanner(System.in);
System.out.print("첫 번째 정수 : ");
int num1 = sc.nextInt();
System.out.print("두 번째 정수 : ");
int num2 = sc.nextInt();
int sum = 0;
int x = 0;
int y = 0;
if(num1 > num2) {
y = num1;
x = num2;
} else {
x = num1;
y = num2;
}
for(int i = x; i <= y; i++) {
sum += i;
}
System.out.println(x + " 부터 " + y + " 까지의 합은 : " + sum);
}
👉 실행결과
첫 번째 정수 : 14
두 번째 정수 : 58
14 부터 58 까지의 합은 : 1620
중첩 for문 : for문 안에 for문을 사용할 수 있다. ✔ 구구단 2단부터 9단까지 출력
public void testFor5() {
//전체를 반복하는 반복문
for(int dan = 2; dan < 10; dan++) {
//구구단을 한 단만 출력하는 반복문
for(int su = 1; su <10; su++) {
System.out.println(dan + " * " + su + " = " + (dan * su));
}
System.out.println();
}
}
- 👉 실행결과
- 2 * 1 = 2 2 * 2 = 4 2 * 3 = 6 2 * 4 = 8 2 * 5 = 10 2 * 6 = 12 2 * 7 = 14 2 * 8 = 16 2 * 9 = 18 3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 3 * 4 = 12 3 * 5 = 15 3 * 6 = 18 3 * 7 = 21 3 * 8 = 24 3 * 9 = 27 4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16 4 * 5 = 20 4 * 6 = 24 4 * 7 = 28 4 * 8 = 32 4 * 9 = 36 5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25 5 * 6 = 30 5 * 7 = 35 5 * 8 = 40 5 * 9 = 45 6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36 6 * 7 = 42 6 * 8 = 48 6 * 9 = 54 7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49 7 * 8 = 56 7 * 9 = 63 8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64 8 * 9 = 72 9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81
✔ 아날로그 시계 출력
public void testFor6() {
//아날로그 시계 출력
for(int hour = 0; hour < 12; hour++) {
for(int min = 0; min <60; min++) {
System.out.println(hour + "시" + min + "분");
}
}
}
👉 실행결과
0시0분
0시1분
0시2분
~ //너무 길어서 생략
11시57분
11시58분
11시59분
별찍기
✔ 한 줄에 5개씩 줄 수를 입력받아 별찍기
public void testFor7() {
Scanner sc = new Scanner(System.in);
System.out.print("출력할 줄 수 : ");
int row = sc.nextInt();
for(int i = 1; i<= row; i++) {
for(int j = 1; j <= 5; j++) {
System.out.print("*");
}
System.out.println();
}
}
👉 실행결과
출력할 줄 수 : 3
*****
*****
*****
별찍기
✔ 한 줄에 별표 문자를 입력한 줄 수와 칸 수 만큼 출력 단, 줄 수와 칸 수가 일치하는 위치에는 줄 번호에 대한 정수가 출력
public void testFor8() {
Scanner sc = new Scanner(System.in);
System.out.print("출력할 줄 수 : ");
int x = sc.nextInt();
System.out.print("출력할 칸 수 : ");
int y = sc.nextInt();
for(int i = 1; i<= x; i++) {
for(int j = 1; j <= y; j++) {
if(i == j) {
System.out.print(i);
} else {
System.out.print("*");
}
}
System.out.println();
}
👉 실행결과
출력할 줄 수 : 5
출력할 칸 수 : 5
1****
*2***
**3**
***4*
****5
while문
표현식
[초기식]
while(조건식){ //while문에는 조건식 하나가 들어간다
.................
[증감식 OR 분기문]; //while문 내부에 실행해줘야 한다.
}
로직순서
- 조건식이 true일때 {}안 실행, false이 될 때까지 {}안에 내용 실행
- {}실행이 끝나면 다시 조건식 확인 후 true면 재실행, false일때 중단
- {}안에 조건을 벗어나게 할 연산이 있어야 함 (증감식, 분기문 등)
✔ 1~5까지 반복문 수행
public class B_while{
public static void main(String[] args){
int i = 1;
while(i <= 5){
System.out.println(i + “번째 반복문 수행중...”);
i++;
}
}
}
👉 실행 결과
1번째 반복문 수행중...
2번째 반복문 수행중...
3번째 반복문 수행중...
4번째 반복문 수행중...
5번째 반복문 수행중...
✔ 문자열을 입력 받아 인덱스별로 문자를 출력
public void testWhile2() {
Scanner sc = new Scanner(System.in);
System.out.print("문자열 입력 : ");
String str = sc.next();
int i = 0;
while(i < str.length()) {
char ch = str.charAt(i);
System.out.println(i + " : " + ch);
i++;
}
}
👉 실행 결과
문자열 입력 : apple
0 : a
1 : p
2 : p
3 : l
4 : e
//1부터 입력받은 수 까지의 합
public void testWhile3() {
//1부터 입력받은 수 까지의 합
Scanner sc = new Scanner(System.in);
System.out.print("정수 하나 입력 : ");
int num = sc.nextInt();
int i = 1;
int sum = 0;
while(i <= num) {
sum += i;
i++;
}
System.out.println("1부터 " + num + "까지의 합은 " + sum + "입니다.");
}
👉 실행 결과
정수 하나 입력 : 5
1부터 5까지의 합은 15입니다.
구구단 2단부터 9단까지
public void testWhile4() {
//구구단 2단부터 9단까지 출력
System.out.println("===========");
int dan = 2;
int su = 1;
while(true) {
if(su == 10) {
System.out.println("===========");
dan++;
su = 1;
} else {
System.out.println(dan * su);
su++;
}
//System.out.println(dan * su);
if(dan == 9 && su == 9) {
System.out.println(dan * su);
break;
}
}
// while(dan < 10) {
// while(su < 10) {
// System.out.println(dan*su);
// su++;
// }
// System.out.println();
// dan++;
// }
}
- 실행결과
- =========== 2 4 6 8 10 12 14 16 18 =========== 3 6 9 12 15 18 21 24 27 =========== 4 8 12 16 20 24 28 32 36 =========== 5 10 15 20 25 30 35 40 45 =========== 6 12 18 24 30 36 42 48 54 =========== 7 14 21 28 35 42 49 56 63 =========== 8 16 24 32 40 48 56 64 72 =========== 9 18 27 36 45 54 63 72 81
줄 수와 칸 수를 스캐너로 입력받아 줄 수와 행 수만큼의 *을 출력하세요 단, 줄 수와 행 수가 같은 위치에는 *대신 줄의 번호를 출력하세요
public void testWhile5() {
Scanner sc = new Scanner(System.in);
System.out.print("줄 수를 입력하세요 : ");
int x = sc.nextInt();
System.out.print("칸 수를 입력하세요 : ");
int y = sc.nextInt();
int i = 1;
int j = 1;
while(i <= x) {
j = 1;
while(j <= y) {
if(i == j) {
System.out.print(i);
} else {
System.out.print("*");
}
j++;
}
System.out.println();
//System.out.println("j는 " + j);
i++;
}
}
실행결과
줄 수를 입력하세요 : 5
칸 수를 입력하세요 : 5
1****
*2***
**3**
***4*
****5
do ~ while문
✔
do ~ while문 //명령어"~해라" do를 먼저 실행 후 while문 반복하는 형태
표현식
[초기식]
do {
.................
[증감식 OR 분기문];
} while(조건식);
로직순서
- do{ }안의 내용 먼저 실행
- 조건식 확인 후 true면 {}안의 내용 실행, false면 실행중단
- {}안에 조건을 벗어나게 할 연산이 있어야 함 (증감식, 분기문 등)
- while이 false여도 do는 실행된다. 그렇기 때문에 switch 문의 보기 나열해주는 형태가 do에서 자주 활용된다.
✔
public class C_doWhile{
public static void main(String[] args){
int i = 1;
int sum = 0;
do{
sum += i;
i++;
}while(false);
System.out.println(“sum : ” + sum);
}
}
👉 실행결과
sum : 1
반복해서 문자열을 입력 받아 출력해주고 'exit'이란 단어를 만나면 실행 종료
public void testDoWhile() {
Scanner sc = new Scanner(System.in);
String str;
do {
System.out.print("문자열을 하나 입력하세요 : ");
str = sc.nextLine();
System.out.println("str : " + str);
} while(!str.equals("exit"));
}
실행 결과
문자열을 하나 입력하세요 : anmut
str : anmut
문자열을 하나 입력하세요 : str
str : str
문자열을 하나 입력하세요 : exit
str : exit
분기문을 사용해 'exit'를 만나면 무한루프에서 빠져나가 '프로그램 종료'를 출력하고 멈춤
public void testDoWhile2() {
Scanner sc = new Scanner(System.in);
String str;
do {
System.out.print("문자열을 하나 입력하세요 : ");
str = sc.nextLine();
System.out.println("str : " + str);
if(str.equals("exit")) {
break;
}
} while(true);
System.out.println("프로그램 종료"); //if문이 없으면 무한루프때문에 구문 밖을 빠져나오지 못해서 에러가 뜬다
}
실행결과
문자열을 하나 입력하세요 : jfid
str : jfid
문자열을 하나 입력하세요 : slif
str : slif
문자열을 하나 입력하세요 : exit
str : exit
프로그램 종료
분기문
- break
- 반복문을 빠져 가나는 구문 break구문이 있는 곳에서 부터 반복문을 빠져 나옴
✔
public class A_break{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print(“숫자 하나를 입력하세요 : ”);
int num = sc.nextInt();
for(int i = 1; ; i++){
sum += i;
if(i > num){ break;
}
}
System.out.println(“1부터 ” + num + “까지의 합은 ” + sum + “입니다.” );
}
}
👉 실행결과
숫자 하나를 입력하세요 : 10
1부터 10까지의 합은 55 입니다.
- continue
- 반복문 실행시 continue 아래 부분은 실행하지 않고 반복문을 다시 실행 (for문의 경우 증감식으로 이동)
✔
public class B_continue{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print(“숫자 하나를 입력하세요 : ”);
int num = sc.nextInt();
for(int i = 1; i <= num; i++){
if(num % 2 != 0){
continue;
}
sum += i;
}
System.out.println(“1부터 ” + num + “까지의 짝수의 합은 ” + sum + “입니다.” );
}
}
👉 실행결과
숫자 하나를 입력하세요 : 10
1부터 10까지의 짝수의 합은 30 입니다.
1~100까지 정수들의 합계 출력 단, 4의 배수는 빼고 계산
public void testContinue() {
int sum = 0;
for(int i = 1; i <=100; i++) {
if(i % 4 == 0) {
continue;
}
sum += i;
}
System.out.println("sum : " + sum);
}
실행결과
sum : 3750
구구단 홀수끼리의 연산만 출력
public void testContinue2() {
for(int dan = 2; dan < 10; dan++) {
System.out.println("=====" + dan + "=====");
for(int su = 1; su < 10; su++) {
if(dan % 2 == 0 || su % 2 == 0) {
continue;
}
System.out.println(dan + " * " + su + " = " + (dan*su));
}
System.out.println();
}
}
실행결과
=====2=====
=====3=====
3 * 1 = 3
3 * 3 = 9
3 * 5 = 15
3 * 7 = 21
3 * 9 = 27
=====4=====
=====5=====
5 * 1 = 5
5 * 3 = 15
5 * 5 = 25
5 * 7 = 35
5 * 9 = 45
=====6=====
=====7=====
7 * 1 = 7
7 * 3 = 21
7 * 5 = 35
7 * 7 = 49
7 * 9 = 63
=====8=====
=====9=====
9 * 1 = 9
9 * 3 = 27
9 * 5 = 45
9 * 7 = 63
9 * 9 = 81
label:을 사용해 원하는 곳으로 빠져나가기
public void jumpBreakTest() {
label:
for(;;) {
for(int i = 0; i < 10; i++) {
System.out.println(i);
if(i == 3) {
break label;
}
}
}
}
실행결과
public void jumpBreakTest() {
label:
for(;;) {
for(int i = 0; i < 10; i++) {
System.out.println(i);
if(i == 3) {
break label;
}
}
}
}
'Programming > Java' 카테고리의 다른 글
[Java] 상속(Ingerit) (0) | 2022.03.07 |
---|---|
[Java] 배열 (0) | 2022.03.07 |
[Java] 조건문 (0) | 2022.03.07 |
[Java] java.lang.Math (0) | 2022.03.07 |
[Java] 연산자 (0) | 2022.03.07 |
댓글