Java 3일차 : 구구단을 출력하는 여러가지 코드(1)

피프티·2021년 11월 22일
0

이런 나라도 Java

목록 보기
4/6
post-thumbnail

21. 11. 16 학습일기

반은 이해하고, 반은 얼레벌레 코드를 짠 것 같다.

특히 while 반복문과 for 반복문, if 조건문에서, 머리로 어느 정도 동작 원리는 이해했으니 익숙하지 않아 버벅대는 느낌으로 짠 것 같다.

이런 부분들이야말로 직접 타이핑으로 반복 연습이 많이 필요한 것 같다.

또 학습 시에 코드를 직접 친 것과는 별개로, 여기 Notion에 정리하는 것도 꽤나 노가다였다. 어느 정도 밸런스 선에서 상세하게 기술해야 하는지 아직까지 긴가민가한 면도 없지 않아 있는 데다, 완벽주의 성격 상 스터디로그에 내가 잘못 이해한 것과 애매하게 이해한 것들이 남는 것에 대해 관대하지 못한 부분이 알게 모르게 스트레스를 주는 것 같다.

나중에 더 공부해야 할 부분들도 체크를 해야 할텐데... 어떻게 체크해야 한 눈에 알 수 있을까...?? 아닌가?? 너무 쓸데없이 지엽적인 고민인가??

2단 : 결과값 출력 w/ 타이핑 노가다

  • 한 줄 출력 명령은 System.out.println(프린트할 내용);
    • System 부분은 반드시 대문자로 시작!!
  • 코드 예제
    public class Gugudan {
      public static void main(String args[]) {
        System.out.println("2단");  //"2단"이라는 문자열 출력
        System.out.println(2 * 1);  //2 * 1의 연산 결과값 출력
        System.out.println(2 * 2);  //2 * 2의 연산 결과값 출력
        System.out.println(2 * 3);  //2 * 3의 연산 결과값 출력
        //중략
        System.out.println(2 * 9);  //2 * 9의 연산 결과값 출력
        System.out.println("");     //공백 문자열을 한 줄로 잡아 출력
        }
      }

3단 : 결과값 출력 w/ 한 줄 복붙 노가다

  • 똑같은 명령줄을 계속 일일이 칠 순 없는 노릇이다.
  • 방금 친 명령줄을 아래에 복제(duplication)하기 위해서는
    단축키 Ctrl + Alt + 위 or 아래 화살표를 쓴다.
  • 코드 예제
    public class Gugudan {
      public static void main(String args[]) {
        System.out.println("3단");
        System.out.println(3 * 1);  //이 줄에 커서를 대고 Duplication 단축키
        System.out.println(3 * 2);
        System.out.println(3 * 3);
        //중략
        System.out.println(3 * 9);
        
        System.out.println("");
        }
      }

4단 : int 변수 개념 도입

  • 변수
    • 메모리에 자료를 저장, 필요할 때마다 호출하기 위하여 할당하는 공간
    • 변수 선언 시, 저장할 자료형과 변수명, 초기값을 명시해야 한다. 변수의 경우, 할당 값을 필요에 따라 원하는 절차에서 바꿀 수 있다.
      // ※ 클래스 및 메인 메소드 생략
      
      //자료형 및 변수명 선언 후, 해당 변수에 초기값 대입
        int a;  //정수형 자료를 저장하기 위해 int, 변수명은 a
        a = 1;  //변수명 a에 해당하는 공간에 초기값 1 대입
        System.out.println(a); //a에 할당된 정수 값 1 출력
        
        //자료형 및 변수명 선언과 동시에 초기값 대입
        int b = 2;  //정수형 자료를 저장하기 위해 int, 변수명은 b, 초기값 2 대입
        System.out.println(b); //b에 할당된 정수 값 2 출력
        b = 3;      //변수명 b에 해당하는 공간에 정수 값 3 대입(대체)
        System.out.println(b); //b에 할당된 정수 값 3 출력
  • 코드 예제
    // ※ 클래스 및 메인 메소드 생략
      // 4단 - int 변수 활용할 것
        System.out.println("4단");
        int result = 4 * 1;		//정수형 변수 선언 w/ 변수명 result
        System.out.println(result);
        result = 4 * 2;		//이미 선언된 result 변수값 바꾸기
        System.out.println(result);
        result = 4 * 3;
        System.out.println(result);
        //위 두 줄 선택 후 Ctrl+Alt+아래화살표로 선택 영역 duplicate
        result = 4 * 4;
        System.out.println(result);
        //중략
        result = 4 * 9;
        System.out.println(result);

5단 : 사용자 입력 값 받기

  • 사용자가 원하는 단(e.g. 5단 or 7단)을 주문했을 때, 주문받은 값에 해당하는 구구단을 출력하고 싶을 때 어떻게 하면 될까...??
  • 콘솔에서 사용자에게 값을 입력 받는 Scanner 기능을 사용하기 위해선
    1. 클래스 선언 전, 맨 위에 Scanner 기능을 import한다.

      // 사용자에게 입력값을 받기 위한 Scanner 기능 import
      **import java.util.Scanner;**
      
      public class Gugudan {
      	public static void main(String args[]) {
      		//코드 생략
      	}
      }
    2. Scanner 명령을 사용하여, 원하는 변수에 사용자에게 직접 값을 받아 대입하도록 한다.

      • Scanner 명령은 반드시 대문자로 시작!!
      // ※ 클래스 및 메인 메소드 생략
      
      	Scanner x = new Scanner(System.in);  //사용자에게 값을 받아 x에 대입
      	int c = x.nextInt();  //x의 값을 정수형으로 바꿔 정수형 변수 c에 대입
      	System.out.println(c);  //변수 c에 할당된 값, 즉 사용자가 입력한 값 출력
    3. 코드 실행(Ctrl+F11)하여 콘솔에서 숫자 5를 입력하여 결과를 확인한다.

  • 코드 예제
    // ※ 클래스 및 메인 메소드 생략
    
    		// 5단 - 사용자에게 입력값을 받아(Scanner) 구현해보기
    		System.out.println("몇 단??");
    		Scanner scanned = new Scanner(System.in);
    		int number = scanned.nextInt();
    		System.out.println(number + "단");
    		System.out.println(number * 1);
    		System.out.println(number * 2);
    		//중략
    		System.out.println(number * 9);

6단 : while 반복문

  • 규칙적으로 같은 명령 실행(System.out.println(6 * n);)을 일정 규칙을 통해 프로그램이 자동으로 반복할 수 있도록 명령할 수도 있다.
  • 특정 조건을 만족시키는 한, 같은 명령을 계속 반복하게 하는 구문으로 while이 있다.
    • 기본 구조는 while (반복 조건 제시) {반복 실행할 명령}이 된다.

      // ※ 클래스 및 메인 메소드 생략
      
      	int d = 1;  //정수형 변수 d의 초기값 1 대입
      	while (d < 5) {         //d가 5보다 작을 때 아래의 두 줄을 순차대로 반복 실행
      		System.out.println(d);  //d의 값 출력
      		d++;                    //d의 값을 1 증가시키기
      	}                       //반복문 종료
      
      /* 아래와 같은 값이 출력될 것이다.
      
      1
      2
      3
      4
      
      */
  • 코드 예제
    // ※ 클래스 및 메인 메소드 생략
    
        // 6단 - while 반복문을 사용하여 코드 줄 수를 줄여보기
    		System.out.println("6단");
    		int i = 1;	//단 수 x "몇" <- 1 ~ 9까지의 index 변수 i의 초기값 설정
    		while (i < 10) {	//i < 10 조건 하에 반복 실행(즉, 1 ~ 9)
    			System.out.println(6 * i);	//곱셈 결과 출력
    			i++;	//i 값을 1 증가
    		}  //반복문 종료

7단 : for 반복문

  • while 반복문으로 9줄짜리 한 단의 구구단을 5줄로 줄였다.
    이번에는 for 반복문을 사용해서 좀 더 간단한 명령으로 줄여보자.
    - 반복 횟수가 유한하고, 명확할 때 주로 사용한다.
    - 기본 구조는 for(반복 횟수 제시) {반복 실행할 명령}이 된다.
  • 코드 예제
    // ※ 클래스 및 메인 메소드 생략
    
    		// 7단 - for 반복문을 사용하여 코드 줄 수를 좀 더 줄여보기
    		System.out.println("7단");
    		for (int j = 1; j < 10; j++) { //반복 횟수로써 변수 j의 초기값 및 반복 한정 횟수(9회) 지정 후 반복문 시작
    			System.out.println(7 * j);
    		}	//반복문 종료
    • 반복문이 3줄로 줄었음을 알 수 있다.

8, 9단 : 조건문 w/ 사용자 입력 값 받기

  • 사용자가 2 ~ 9 이외의 값을 입력하였을 때에는 구구단을 실행하지 않고, "2 이상, 9 이하 값만 입력할 수 있습니다."라는 메시지를 출력하고 싶을 때에는 어떻게 하면 될까??
  • 특정 조건에 따라 명령을 다르게 나누어 실행시키는 if, else if, else 조건문이 있다.
    • 기본 구조는 if(조건 1) {조건 1일 때 명령} else if(조건2) {조건 2일 때 명령} else {제시된 어느 조건에도 해당하지 않을 때 명령}이 된다.
      • else if의 여러 번 사용으로 여러 가지 다른 조건들을 제시할 수 있다.
  • 코드 예제
    // ※ 클래스 및 메인 메소드 생략
    
    		// 8, 9단 - 조건문을 사용하여 값 입력 범위를 제한시켜보기
    		System.out.println("이번엔 또 몇 단??");
    		Scanner scannedAgain = new Scanner(System.in);
    		int numberAgain = scannedAgain.nextInt();
    		if (numberAgain < 2) {	//입력값이 2 이하일 때 아래 명령 실행
    			System.out.println("2 이상의 값을 입력해주십시오.");//사용자에게 에러 메시지 출력
    		} else if (numberAgain > 9) { //입력값이 2 이하가 아니지만, 9 이상일 때 아래 명령 실행
    			System.out.println("9 이하의 값을 입력해주십시오.");//사용자에게 에러 메시지 출력	
    		} else { //위의 어느 특정 조건도 해당하지 않을 때 실행
    			System.out.println(numberAgain + "단");
    			for (int k = 1; k < 10; k++) {
    				System.out.println(numberAgain * k);
    			} //반복문 종료
    		}  //조건문 종료
profile
어둠 속에서 은은한 빛을 먹고 강하게 자라는, 응달의 고사리처럼...

0개의 댓글