4day
for문 - 다중 조건문 /조건문 생략 / 무한반복문
for (int i = 1, j = 5 ; i <= 3 ; i++, j--) { // 실제로는 i만 반복문 수행
System.out.println("i = " +i+ ", j = " + j);
}
i = 1, j = 5
i = 2, j = 4
i = 3, j = 3
int i = 1;
// for (int i = 0; i <= 4 ; i++) {
// System.out.println(i + "\t");
for (; i <= 5; i++) { // 초기식 생략
System.out.println(i +"\t");
}
// i변수에 [5]가 저장된 경우 반복문 종료
// i = 5;
for (; i >= 5; i--) { // 초기식 생략
System.out.println(i +"\t");
}
System.out.println();
1
2
3
4
5
6
5
// 초기식 조건식 증감식 생략
for (;;) { // 조건식이 생략된 경우 무조건 참으로 처리 - 무한루프
System.out.println("무한 반복되어 실형되는 명령");
}
// System.out.println("------------------------------------"); // 오류뜸 >> 앞에 실행이 무한반복되기때문에, 실행되지않
무한 반복되어 실형되는 명령
무한 반복되어 실형되는 명령
무한 반복되어 실형되는 명령
무한 반복되어 실형되는 명령
무한 반복되어 실형되는 명령
무한 반복되어 실형되는 명령
....
5day
다중 For문
int cnt = 0; // 이동 방법의 갯수를 저장하기 위한 변수
for (int i = 1; i <= 3; i++) { // A나라 > 섬 - 반복문
for (int j = 1; j <= 4; j++) { // 섬 >> B나라 - 반복문
cnt++;
}
}
System.out.println("이동방법의 갯수 = " + cnt);
이동방법의 갯수 = 12
기초
// ★★★★★★★
// ★★★★★★★
// ★★★★★★★
// ★★★★★★★
for (int i = 0; i < 4; i++) { // 행(Row) 을 처리하기 위한 반복문
for (int j = 0; j < 7; j++) { // 열(Column) 을 처리하기 위한 반복문
System.out.print("★"); // 한단어
}
System.out.println();
}
★★★★★★★
★★★★★★★
★★★★★★★
★★★★★★★
응용1
// 2*= 3*= ... 8*= 9*=
// 2*= 3*= ... 8*= 9*=
// 2*= 3*= ... 8*= 9*=
// 2*= 3*= ... 8*= 9*=
// 2*= 3*= ... 8*= 9*=
// 2*= 3*= ... 8*= 9*=
// 2*= 3*= ... 8*= 9*=
// 2*= 3*= ... 8*= 9*=
for (int i = 1; i <= 9; i++) { // 행(줄)
for (int j = 2; j <= 9; j++) { // 열(칸)
System.out.print( j + "*=\t"); // 한 단어에 입력값을 넣어줌
}
System.out.println();
}
2*= 3*= 4*= 5*= 6*= 7*= 8*= 9*=
2*= 3*= 4*= 5*= 6*= 7*= 8*= 9*=
2*= 3*= 4*= 5*= 6*= 7*= 8*= 9*=
2*= 3*= 4*= 5*= 6*= 7*= 8*= 9*=
2*= 3*= 4*= 5*= 6*= 7*= 8*= 9*=
2*= 3*= 4*= 5*= 6*= 7*= 8*= 9*=
2*= 3*= 4*= 5*= 6*= 7*= 8*= 9*=
2*= 3*= 4*= 5*= 6*= 7*= 8*= 9*=
2*= 3*= 4*= 5*= 6*= 7*= 8*= 9*=
응용2
// 2*1= 3*1= ... 8*1= 9*1=
// 2*2= 3*2= ... 8*2= 9*2=
// ... ... ... ... ...
// 2*8= 3*8= ... 8*8= 9*8=
// 2*9= 3*9= ... 8*9= 9*9=
for (int i = 1; i <= 9; i++) { // 행 (줄)
for (int j = 2; j <= 9 ; j++) { // 열 (칸)
System.out.print(j + "*" + i + "=" + (i*j) + "\t"); // 한 단어에 입력 값을 넣어줌
}
System.out.println();
}
2*1=2 3*1=3 4*1=4 5*1=5 6*1=6 7*1=7 8*1=8 9*1=9
2*2=4 3*2=6 4*2=8 5*2=10 6*2=12 7*2=14 8*2=16 9*2=18
2*3=6 3*3=9 4*3=12 5*3=15 6*3=18 7*3=21 8*3=24 9*3=27
2*4=8 3*4=12 4*4=16 5*4=20 6*4=24 7*4=28 8*4=32 9*4=36
2*5=10 3*5=15 4*5=20 5*5=25 6*5=30 7*5=35 8*5=40 9*5=45
2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 7*6=42 8*6=48 9*6=54
2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 8*7=56 9*7=63
2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 9*8=72
2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
기초 1
// ★ i = 1
// ★★ i = 2
// ★★★ i = 3
// ★★★★ i = 4
// ★★★★★ i = 5
for (int i = 0; i < 5; i++) { // 행 (줄)
for (int j = 0; j <= i; j++) { // 열 (칸)
System.out.print("★"); // 한 단어에 입력값을 넣어줌
}
System.out.println();
}
★
★★
★★★
★★★★
★★★★★
기초 2 - 방법 1)
// ★★★★★ i = 5
// ★★★★ i = 4
// ★★★ i = 3
// ★★ i = 2
// ★ i = 1
for (int i = 1; i <= 5; i++) { // 행 (줄)
for (int j = 1; j <= ( 6 - i ); j++) { // 열 (칸)
System.out.print("★"); // 한 단어에 입력값을 넣어줌
}
System.out.println();
}
// i는 줄/ j는 ★의 갯수
★★★★★
★★★★
★★★
★★
★
기초 2 - 방법 2)
//★★★★★ i=5 별=5
//★★★★ i=4 별=4
//★★★ i=3 별=3
//★★ i=2 별=2
//★ i=1 별=1
for(int i = 5; i >= 1; i--) {
for(int j = 1; j <= i; j++) {
System.out.print("★");
}
System.out.println();
}
★★★★★
★★★★
★★★
★★
★
응용 - 방법1)
// ☆☆☆☆★ i = 1 / 흰별 = 4 / 검은별 = 1
// ☆☆☆★★ i = 2 / 흰별 = 3 / 검은별 = 2
// ☆☆★★★ i = 3 / 흰별 = 2 / 검은별 = 3
// ☆★★★★ i = 4 / 흰별 = 1 / 검은별 = 4
// ★★★★★ i = 5 / 흰별 = 0 / 검은별 = 5
for(int i = 1; i <= 5; i++) { // 행 (줄) - 5줄 생성
for(int j = 1; j <= (5-i); j++) { // (가로로 갯수가 늘어남 - i)
System.out.print("☆");
}
for(int j = 1; j <= i; j++) {
System.out.print("★");
}
System.out.println();
}
☆☆☆☆★
☆☆☆★★
☆☆★★★
☆★★★★
★★★★★
응용 - 방법 2)
// 1 2 3 4 5 >> j
// ☆☆☆☆★ i = 1 / 흰별 = 4 / 검은별 = 1
// ☆☆☆★★ i = 2 / 흰별 = 3 / 검은별 = 2
// ☆☆★★★ i = 3 / 흰별 = 2 / 검은별 = 3
// ☆★★★★ i = 4 / 흰별 = 1 / 검은별 = 4
// ★★★★★ i = 5 / 흰별 = 0 / 검은별 = 5
for (int i = 0; i < 5 ; i++) {
for (int j = 0; j < 5; j++) {
if (i + j < 4) { // i + j값이 4 보다 작다면 "☆"
System.out.print("☆");
} else { // 아니라면 "★"
System.out.print("★");
}
}
System.out.println();
}
☆☆☆☆★
☆☆☆★★
☆☆★★★
☆★★★★
★★★★★
while문
// while 문
// 조건에 의해 명령을 반복 실행
// 반복문의 횏수가 명확하지 않은 경우 사용하는 반복문
// 형식 ) while(조건식) { 명령; 명령; ...}
// 조건식의 결과가 참인 경우 명령을 반복 실행하고 거짓인 경우 반복문 종료
// 조건식 생략 불가능
// 블록 내부에 작서오딘 명령을 0번 이상 실행
// do { 명령; 명령; ... } while (조건식)
// 블럭 내부에 작성된 명령을 1번 이상 실행
// 조건에 의해 명령을 반복 실행
// 반복문의 횏수가 명확하지 않은 경우 사용하는 반복문
// 형식 ) while(조건식) { 명령; 명령; ...}
// 조건식의 결과가 참인 경우 명령을 반복 실행하고 거짓인 경우 반복문 종료
// 조건식 생략 불가능
// 블록 내부에 작서오딘 명령을 0번 이상 실행
// do { 명령; 명령; ... } while (조건식)
// 블럭 내부에 작성된 명령을 1번 이상 실행
// "Java Programming" 을 화면에 5번 출력하는 프로그램 작성
int i = 0;
while (i < 5) {
System.out.println("Java Programming");
i++;
}
Java Programming
Java Programming
Java Programming
Java Programming
Java Programming
// 1 ~ 100 범위의 정수들의 합계를 계산하여 출력하는 프로그램 작성
int j = 1;
int tot = 0;
do {
tot += j;
j++;
} while(j <=100);
System.out.println( " 1 부터" + " 100" + " 까지 더하면 = " + tot);
1 부터 100 까지 더하면 = 5050
// A4 용지를 반으로 계속 접어 펼쳤을 경우 사각형 모양의 갯수가 500개 이상이
// 만들어 지려면 몇번 접어야 되는지를 계산하여 출력하는 프로그램 작성
int cnt = 0; // 접는 횟수
int gae = 1; // 사각형 모양의 갯수
while (gae < 500) { // A4 용지를 반으로 계속 접기위한 행위를 제공하는 반복문
cnt++; // 접는 횟수는 1씩 증가
gae*= 2; // 사각형 모양의 갯수는 2배씩 증가
// ++한번접을때마다 , 2배씩 증가
}
System.out.println(cnt + "번 접으면 " + gae + " 개의 사각형이 만들어집니다.");
9번 접으면 512 개의 사각형이 만들어집니다.
// 1 ~ X 범위의 정수들의 합계가 300 이상이 만들어지려면 X가 얼마인지 계산하여 출력하는 프로그램 작성
// 1 + 2 + 3 ... + X (???) >= 300
int x = 0; // x - 1씩 증가더;는 정수값 저장
int sum = 0; // sum - 누적 결과 (합계) 저장
while ( sum < 300) {
x++;
sum += x;
}
System.out.println("1~" + x + " 범위의 정수들의 합계 = " + sum);
1~24 범위의 정수들의 합계 = 300
Break 문
// break
// switch 구문 또는 반복문을 강제로 종료하기 위한 명령
// switch 구문 또는 반복문을 강제로 종료하기 위한 명령
// 반복문은 조건식의 결과가 거짓인 경우 반복문 종료
for (int i = 0 ; i < 5 ; i++) {
if ( i==3) break; // if 구문의 종료 참인경우 break 구문을 이용하여 반복문 종료
System.out.print( i + "\t");
}
System.out.println();
0 1 2
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 5; j++) {
// break 라벨명 : 라벨명으로 지정된 반복문 종료
if (j==3) break; // for (int i = 1; i <= 5; i++) 반복문 종료
System.out.println("i = " + i + ", j = " + j);
}
}
i = 1, j = 1
i = 1, j = 2
i = 2, j = 1
i = 2, j = 2
i = 3, j = 1
i = 3, j = 2
i = 4, j = 1
i = 4, j = 2
i = 5, j = 1
i = 5, j = 2
// 반복문 작성시 반복문을 구분하기 위한 식별자(라벨명) 선언 가능
// 형식) 라벨명:반복문
loop:
for(int i = 1; i <= 5; i++) {
for(int j = 1;j <= 5;j++) {
// break 라벨명 : 라벨명으로 지정된 반복문 종료
if(j==3) break loop;//for(int i=1;i<=5;i++) 반복문 종료
System.out.println("i = "+i+", j = "+j);
}
}
i = 1, j = 1
i = 1, j = 2
Continue 문
// Continue
// 반복문에서 명령을 처음부터 다시 실행하기 위해 사용하는 제어문
// 반복문 continue 명령 하단에 작성된 명령을 실행하지 않고 처음부터 다시 실행
// 반복문에서 명령을 처음부터 다시 실행하기 위해 사용하는 제어문
// 반복문 continue 명령 하단에 작성된 명령을 실행하지 않고 처음부터 다시 실행
for (int i = 0; i < 5; i++) {
if (i==3) continue; // i가 3일때만 System.out.println(i + "\t") 건너뜀
System.out.println(i + "\t");
}
System.out.println();
0 1 2 4
for(int i=1;i<=5;i++) {
for(int j=1;j<=5;j++) {
if (j == 3) continue;//for(int j=1;j<=5;j++) 반복문 재실행
System.out.println("i = " + i + ", j = " + j);
}
}
i = 1, j = 1
i = 1, j = 2
i = 1, j = 4
i = 1, j = 5
i = 2, j = 1
i = 2, j = 2
i = 2, j = 4
i = 2, j = 5
i = 3, j = 1
i = 3, j = 2
i = 3, j = 4
i = 3, j = 5
i = 4, j = 1
i = 4, j = 2
i = 4, j = 4
i = 4, j = 5
i = 5, j = 1
i = 5, j = 2
i = 5, j = 4
i = 5, j = 5
loop:
for(int i=1;i<=5;i++) {
for(int j=1;j<=5;j++) {
if(j==3) continue loop;//for(int i=1;i<=5;i++) 반복문 재실행
System.out.println("i = "+i+", j = "+j);
}
}
i = 1, j = 1
i = 1, j = 2
i = 2, j = 1
i = 2, j = 2
i = 3, j = 1
i = 3, j = 2
i = 4, j = 1
i = 4, j = 2
i = 5, j = 1
i = 5, j = 2
Scanner 문
// System.out - 프로그램의 값을 출력스트림을 사용하여 값을 화면에 전달하는 기능을 제공하는 객체 (화면에 보여주는것 /= 모니터)
// System.in - 키보드로 부터 전달된 값을 입력트림을 사용하여 프로그램에 전달하는 기능을 제공 (키보드를 이용하여 화면에 띄어주게 하는것 /= 키보드)
// 사용자로부터 키보드로 이름과 나이를 입력받아 화면에 출력하는 프로그램 작성
package basic;
import java.util.Scanner; // java.util.Scanner 을 가지고오다.
// System.out - 프로그램의 값을 출력스트림을 사용하여 값을 화면에 전달하는 기능을 제공하는 객체 (화면에 보여주는것 /= 모니터)
// System.in - 키보드로 부터 전달된 값을 입력트림을 사용하여 프로그램에 전달하는 기능을 제공 (키보드를 이용하여 화면에 띄어주게 하는것 /= 키보드)
// 사용자로부터 키보드로 이름과 나이를 입력받아 화면에 출력하는 프로그램 작성
public class ScannerApp {
public static void main(String[] args) {
// Scanner // ctrl + space 치면 import 자동으로 됨
// Scanner 클래스 : 입력스트림(키보드 - System.in, 파일 등)을 전달받아 원하는 값을 입력받기 위한 기능을 제공
// 값을 입력받기 위한 기능 (메소드)을 제공하는 클래스
// Scanner 객체를 생성하여 참조변수에 저장
// > 참조변수에 저장된 객체를 사용하여 메소드 호출하여 필요한 기능 구현
Scanner scanner = new Scanner( System.in); // scanner에 객체를 만듦
System.out.println("이름 입력 >> ");
// Scanner.nextLine() - 입력스트림에 전달된 값(입력값)을 문자열로 변환하여 반환하는 메소드
// 키보드로 입력된 값을 문자열로 반환받아 변수에 저장
// > 키보드 입력값이 없는 경우 프로그램의 흐름(스레드)이 일시중지
// > 키보드로 값을 입력한 후 엔터 (Enter) 를 입력하는 프로그램의 흐름 재실행
String name = scanner.nextLine();
System.out.println("나이 입력 >>");
// Scanner.nextInt() - 입력값을 정수값으로 변환하여 반환하는 메소드
// 키보드로 입력된 값을 정수값으로 반환받아 변수에 저장
// > 키보드로 입력된 값이 정수값이 아닌경우, 예외 발생(Exception) - 프로그램 강제 종료 (ex 예외처리된경우 - 블루스크린)
int age = scanner.nextInt();
System.out.println("[결과]" + name + " 님의 나이는 " + age + "살 입니다.");
// Scanner.close() : Scanner 객체가 사용한 입력스트림을 제거하는 메소드
scanner.close();
InputCheck문
// 키보드로 접수를 입력받아 학점을 계산하여 출력하는 프로그램 작성
// > 100 ~ 90 : A
// 89 ~ 80 : B
// 79 ~ 70 : C
// 69 ~ 60 : D
// 59 ~ 0 : F
// > 100 ~ 90 : A
// 89 ~ 80 : B
// 79 ~ 70 : C
// 69 ~ 60 : D
// 59 ~ 0 : F
// 키보드로 입력된 점수가 0 ~ 100범위의 정수값이 아닌 겨우 에러 메세지 출력 후 재입력 되도록
Scanner scanner = new Scanner(System.in);
/* // 잘못된 값이 들어와도 실행됨
System.out.println("점수 입력[0 ~ 100] >> ");
int score = scanner.nextInt();
*/
// 키보드로 입력된 점수가 0 ~ 100범위의 정수값이 아닌 겨우 에러 메세지 출력 후 재입력 되도록
Scanner scanner = new Scanner(System.in);
방법 1)
// 반복문의 조건식이 문조건 참이되도록 비정상적인 값을 초기값으로 저장
int score = -1; // 비정상적인 값을 넣어줌
// 비정상적인 입력값인 경우 반복문 실행하고, 정상적인 값이 입력된경우 반복문 종료
while (score < 0 || score > 100) {
System.out.println("점수 입력[0 ~ 100] >> ");
score = scanner.nextInt();
if (score <0 || score > 100) {
System.out.println("[에러] 점수는 0 ~ 100 범위의 정수값만 입력 가능합니다.");
}
}
// 키보드로 입력된 점수가 0 ~ 100범위의 정수값이 아닌 겨우 에러 메세지 출력 후 재입력 되도록
Scanner scanner = new Scanner(System.in);
방법 2 )
int score;
do {
System.out.println("점수 입력[0 ~ 100] >> ");
score = scanner.nextInt();
if (score < 0 || score > 100) {
System.out.println("[에러] 점수는 0 ~ 100 범위의 정수값만 입력 가능합니다.");
}
} while(score < 0 || score > 100);
// 키보드로 입력된 점수가 0 ~ 100범위의 정수값이 아닌 겨우 에러 메세지 출력 후 재입력 되도록
Scanner scanner = new Scanner(System.in);
방법 3 )
int score;
while(true) {//조건식 대신 [true]를 사용하면 무조건 참 - 무한루프
System.out.print("점수 입력[ 0 ~ 100] >> ");
score=scanner.nextInt();
//입력값이 정상적인 값인 반복문 종료
if(score >= 0 && score <= 100) break;
//비정상적인 값이 입렵된 경우 에러 메세지 출력 후 반복문 재실행
System.out.println("[에러] 점수는 0~100 범위의 정수값만 입력 가능합니다.");
}
String grade = " ";
switch (score/10) {
case 10:
case 9: grade = "A";
break;
case 8: grade = "B";
break;
case 7: grade = "C";
break;
case 6: grade = "D";
break;
default: grade = "F";
}
System.out.println("[결과] " + score + "점 = " + grade + "학점");
scanner.close();
}
}
'3월 ~ 5월) 자바 > java' 카테고리의 다른 글
7Day - ArraySort / Method / MethodApp (0) | 2023.04.05 |
---|---|
6Day - MathRandom / Lotto / RpaGane / Array /DoubleArray (0) | 2023.04.04 |
4Day - 조건문 - if / else - if / for문 (0) | 2023.03.31 |
3Day - 기본 타입 / 타입 변환 / 연산자 와 연산식 (0) | 2023.03.30 |
2Day - 변수 선언 (0) | 2023.03.29 |