본문 바로가기

BackEnd/Java

8/17 JAVA - 주사위 굴리기, 타이머 만들기

728x90
반응형

휴가 끝난 후 이때까지 배운 것 복습!

 

 

10진수 <-> 2진수 변환 

2^7  2^6  2^5  2^4  2^3  2^2  2^1  2^0
128   64   32   16    8    4    2    1

10진수 5를 2진수로 표현하면?
00000101

192 = 11000000
168 = 10101000
7     =  00000110
140 = 10001100

 

 

 

자주 쓰던 계산기이지만, 프로그래머 기능이 있는지는 몰랐다

 

HEX = 16진수

DEC = 10진수

OCT = 8진수

BIN = 2진수 

 

 

 

중첩 for 문 

 for 문 내부에 또 다른 for문을 기술하는 것
  - 바깥쪽 for 문과 안쪽 for 문으로 구분
    => 바깥쪽 for문이 한 바퀴 돌 때, 안쪽 for 문은 여러 바퀴를 돈다.
    => 즉, 안쪽 for문의 반복 횟수가 바깥쪽 for문 반복 횟수보다 많다
       = 안쪽 for문 반복 횟수 = 안쪽 for문 횟수 * 바깥쪽 for 문 횟수
  ex) 시계의 분침이 바깥쪽 for문으로 0 ~ 59까지 60번 반복할 때
      분침 1바퀴 당 초침이 안쪽 for 문으로 0 ~ 59까지 60 반복
      = 1시간(60분) 당 초침 반복 횟수 = 분침횟수(60) * 초침횟수(60)
       
   <기본 문법>
   for(초기식1; 조건식1; 증감식1) {  //바깥쪽 for 문
       
      문장1; // 바깥쪽 for문의 조건식1이 true 일 때 실행되는 문장 
       
      for(초기식2;조건식2;증감식2) { // 안쪽 for문 
          문장 2; 
          // 반복 횟수 = 안쪽 for문 반복횟수 * 바깥쪽 for문 반복횟수
      }
       
      문장 3; // 안쪽 for 문 반복이 종료된 후 실행되는 문장 
    }
           



바깥쪽 for 문 : i 값이 1 ~ 3 까지 1씩 증가하면서 반복 

for(int i = 1; i <= 3; i++) { //바깥쪽 for 문 
System.out.println("i = "+ i); //3번 반복함 

for(int j = 1; j <= 2; j++) { //안쪽 for문 
System.out.println("-------> j = " + j);
// 반복 횟수 = j횟수 (2) * i횟수 (3) = 6회 
}
//안쪽 for문 반복이 종료된 후 실행되는 문장 
System.out.println("---------안쪽 for문 반복 종료");

}
//바깥쪽 for문 반복이 종료된 후 실행되는 문장

 

 

 

// 바깥쪽 for문 i값이 1 ~ 10 까지 반복할 동안
		// 안쪽 for문 j 값을 1 ~ 5 까지 반복하면서 i 와 j 값을 출력 
		
		for(int i=1;i<=10;i++) {

			System.out.println("i = " + i );


			System.out.println("----안쪽 for문 반복 시작----");
			for(int j = 1;j<=5;j++) {
				System.out.println("j =" + j);
				
				
			}
			System.out.println("----안쪽 for문 반복 종료----");
		}

 

타이머 만들기

  타이머 (xx분 xx초)
  - 시(hour) : 0 ~ 23시
  - 분(min) : 0 ~ 59분
  - 초(second) : 0 ~ 59초
   
  <출력 예시>
  -0분 0초 
  -0분 1초
  ...생략...
  -0분 59초
  -1분 0초
  -59분 58초
  -59분 59초
 

for(int min = 0; min <=59;min++) {
			for(int sec = 0; sec <=59; sec++) {
				System.out.println(min + "분" + sec + "초");
			}
            
}

 

 

for문을 활용한 구구단 전체 출력 (2단 ~ 9단)

  <2단>
  2*1 = 2
  2*2 = 4
  2*3 = 6
  ...
  9*9 = 81
  => 단(dan)이 2~9까지 1씩 증가 ( 바깥쪽 for 문 )
  이 때, 각 단마다 i 값이 1~9까지 1씩 증가 
 

for(int dan = 2; dan <=9;dan++) {
			System.out.println("<"+dan+"단>");
			for(int i = 1; i<=9; i++) {
				System.out.println(dan + "*" + i + "=" +(dan*i));
				
			}
			
		}

 

printf 로 출력하기
for(int dan = 2; dan <=9;dan++) {
			System.out.printf("< %d 단>\n", dan);
			for(int i = 1; i<=9; i++) {
				System.out.printf( "%d  *  %d  = %d\n",dan, i, dan*i);

 

\n  넣어도 되고,

system.out.println(); 을 넣어줘도 됨. 

 

 

주사위 굴리기


  주사위 2개를 굴려서 주사위 눈의 합이 6일 때, 두 주사위 값을 출력 
  ex) 주사위 1    주사위 2     합계
          1   +   5     = 6
          2   +   4     = 6
          3   +   3     = 6
          4   +   2     = 6
          5   +   1     = 6
           주사위 눈 : 1 ~ 6
           주사위 (dice1, dice2) 변 수 값 1~6 , 1씩 증가 반복, 
           주사위 눈의 합계가 6인지 판별하여 6일 때, 주사위 눈의 값을 출력 할 것. 
           판별해야하므로 if 문이 같이 사용됨. 
 

for(int dice1 = 1;dice1<=6;dice1++) {
	for(int dice2 = 1;dice2<=6;dice2++) {
		if(dice1 + dice2 == 6) {
			System.out.println(dice1 + "+" + dice2 +  "=" +"주사위 합은 6이다");		
		}
	}
}
for(int dice1 = 1;dice1<=6;dice1++) {
	for(int dice2 = 1;dice2<=6;dice2++) {
		if(dice1 + dice2 == 6) {    //주사위 눈의 합이 6인지 판별 
			//두 주사위 눈의 합이 6일 때만 출력 실행.
			System.out.println(dice1 + " + " + dice2 +  " = " +"주사위 합은 " + (dice1+dice2) + " 이다");
		}
	}
}
728x90
반응형