개인 공부/하루 공부

4/4) 다중 for문 / scanner

첼로그 2023. 4. 4. 23:38

다중 for문

 

	// ★★★★★     i = 5
        // ★★★★       i = 4
        // ★★★        i = 3
        // ★★          i = 2
        // ★           i = 1
        for (int i = 1; i <= 5; i++) { // 행 (세로) / (i <=5)으로 5행이 완성 될때까지 작동
            for (int j = 1; j <= ( 6 - i ); j++) { // 열 (가로) / j <= (6-i) i의 증가로, 반복할수록 줄어듦
                System.out.print("★"); // 한 단어에 입력값을 넣어줌
            }
            System.out.println();
        }
     
★★★★★
★★★★
★★★
★★
★
     
        i 가 j

 


어렵다..!! 피곤해서그런지 더 어려움

	// ☆☆☆☆★    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++) { // j < (5-i)  - △ i가 증가함, j값이 5-i보다 크면 종료.
                    System.out.print("☆"); // 이걸△ ☆로 출력
                }
            for (int j = 1; j <= i ; j++) { // j는 1임. j가 i보다 크면 종료됨(딱 5줄 세로만)/ j는 1씩 증가
                System.out.print("★");

            }
            System.out.println();
        }

 


이해하기 힘듦 (for  문안에 if /else있는거) ▽

 // 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 = 1; i <= 5 ; i++) { // (세로)5번 반복문 출력
            for (int j = 1; j <= 5; j++) { // (가로)j도 5번 반복문을 증가 수행하는데, ▽

                if (i + j < 6) { //  맞다면, i + j 합친 값이 6보다 작다면 "☆"
                    System.out.print("☆");

                } else { // 아니라면 "★"
                    System.out.print("★");
                }
            }
            System.out.println();
            
☆☆☆☆★
☆☆☆★★
☆☆★★★
☆★★★★
★★★★★

Scanner (키보드  출력문)

 

(String 문자열로 반환시켜줌)

.next() : 공백을 기준으로 한 단어, 혹은 한문자씩 입력 받음

.nextLine() : 문자 또는 엔터를 치기 전까지의 문장 전체를 입력 받음

 

https://velog.io/@suyyeon/JAVA-Scanner%ED%81%B4%EB%9E%98%EC%8A%A4-next-nextLine-%EC%B0%A8%EC%9D%B4

// pizza 라는 새로운객체를 만들기
	Scanner pizza = new Scanner (System.in); // 글자로 입력받음
	System.out.println("어느 피자를 고르시겠습니까? >> ");

	String menu = pizza.next(); // menu = pizza 연결시켜줌 

// .next() / .nextLine()  차이?
//  Scanner 클래스의 메소드 

// 공통점: 문자열로 반환시켜줌 
// .next() : 공백을 기준으로 한단어, 혹은 한문자씩 입력 받는다.
// .nextLine() : 문자 또는 엔터를 치기 전까지의 문장 전체를 입력받음

	System.out.println ("콜라 500ml 몇병 필요 ? >>");
	int coke = pizza.nextInt(); // 숫자로 입력받음

       System.out.println("[주문] " + menu + "피자 + " + "콜라 " + coke + "병 주문.");
        pizza.close(); // 피자의 객체 입력스트림 제거


어느 피자를 고르시겠습니까? >> 
햄
콜라 500ml 몇병 필요 ? >>
3
[주문] 햄피자 + 콜라 3병 주문.

 


// 키보드로 접수를 입력받아 학점을 계산하여 출력하는 프로그램 작성
// 100 ~ 90 : A
// 89 ~ 80 : B
// 79 ~ 70 : C
// 69 ~ 60 : D
// 59 ~ 0 : F

+ // 키보드로 입력된 점수가 0 ~ 100범위의 정수값이 아닌 겨우 에러 메세지 출력 후 재입력 되도록 해주기
Scanner pizza = new Scanner (System.in);

int score; // 예외값 설정해줌 
while(true) { // 조건식 대신 [true]를 사용하면 무조건 참 - (무한루프)
System.out.print("점수 입력[ 0 ~ 100] >> ");

score = pizza.nextInt(); 
if(score >= 0 && score <= 100) break; // 입력값이 정상값이면 반복문 종료=break (score가 0이상 100이하면 정상값)

 System.out.println("[에러] 점수는 0~100 범위의 정수값만 입력 가능합니다.");
 // 비정상적인 값이 입력된 경우 에러 메세지 출력 후 반복문 재실행 △
}

// 점수 등급 설정해줌 ▽
 String grade = " "; // grade 저장해줌
        switch (score/10) { // 점수기준이 10단위로 딱딱 떨어져서 적어도됨
            case 10:
            case 9: grade =  "A";
                break; // break;를 사용함으로써 밑 실행문을 중지( 조건이 해당된다면)

            case 8: grade =  "B";
                break; // break;를 사용함으로써 밑 실행문을 중지( 조건이 해당된다면)

            case 7: grade =  "C";
                break; // break;를 사용함으로써 밑 실행문을 중지( 조건이 해당된다면)

            case 6: grade =  "D";
                break; // break;를 사용함으로써 밑 실행문을 중지( 조건이 해당된다면)

            default: grade = "F";
            // 이외에는 F학점
        }
        

        System.out.println("[결과] " + score + "점 = " + grade + "학점");
        scanner.close();