자바 - 연습문제3

빵제이·2023년 7월 24일
0

자바 연습문제

목록 보기
3/10

[ 1번 ]

 public static void ex01() {
    // 구구단 출력하기
    // 2 x 1 = 2
    // 2 x 2 = 4
    // ...
    // 2 x 9 = 17
    int dan = 2;  // 이 곳에 원하는 구구단을 넣으면 된다.
   
for(int n=1; n<=9; n++) {
      System.out.println(dan + " x " + n + "는 " + "= " + (dan * n) + "입니다.");
    }
  }

[ 2번 ]

public static void ex02() {
  // 100000 넘을 때까지 60원씩 모금하면서 과정 출력하기
  // 1회 모금액 60원, 현재 모금액 60원
  // 2회 모금액 60원, 현재 모금액 120원
  // 3회 모금액 60원, 현재 모금액 180원
  // ...
  // 1667회 모금액 60원, 현재 모금액 100020원
  final int GOAL = 100000;  // 목표 모금액    //final로 상수처리해주면, 내가 가진 값은 변하지 않는다고 지정해줌.
  int money = 60;  // 1회당 모금액
  int total = 0;  // 모금액 합계
  int nth = 0;  // 회차
  
while(total < goal) {
    total += money;
    nth++;
   System.out.println("목표 모금액 " + goal + "원중 " + nth + "회차를 통해서 " + total + "을 모았습니다." );
  }
 }  

[ 3번 ]

public static void ex03() {
  // 전체 구구단 출력하기 - 1
  // 2 x 1 = 2
  // ...
  // 9 x 9 = 81
  // 고정 값 : 바깥 LOOP에 배치 
  //(원하는 dan으로 고정시키고, 1~9까지 순회시킴)
  
for(int dan=2; dan<=9; dan++) {     //★★★데이터타입 꼭 써.
    for(int n=1; n<=9; n++) {
      System.out.println(dan + " x " + n + "는 " + "= " + (dan * n) + "입니다.");
    }
  } 
}

[ 4번 ]

public static void ex04() {
    // 전체 구구단 출력하기 - 2
    // 2x1=2  3x1=3  4x1=4  ... 9x1=9
    // ...
    // 2x9=18 3x9=27 4x9=36 ... 9x9=81
    
// 참고할코드
    // System.out.print("2x1=2");  // 2x1=2를 출력한 뒤 줄을 바꾸지 않는다.
    
for(int n=1; n<=9; n++) {
      for(int dan=2; dan<=9; dan++) {
        System.out.print(dan + "x" + n + "=" + String.format("%-4d", dan * n));
        // "%-4d" 로 끝자리에 4자리 숫자를 정수로 출력시켜서 숫자가 없는 곳에는 공백으로 채움.
      }
      System.out.println();    //줄 바꿈
    }
  }

[ 5번 ]

public static void ex05() {
  // 삼각별 출력하기 - 1 (2중 loop)
  //     star=12345 
  // row=1   *
  // row=2   **
  // row=3   ***
  // row=4   ****
  // row=5   *****
  //
  // row=1, star=1
  // row=2, star=12
  // row=3, star=123
  // row=4, star=1234
  // row=5, star=12345
  //형식을 써놓고 하면 편하다.
  // 풀이법 : ↓ 
  //모든 star의 시작값이 '1'이다.
  //row하고 star의 종료되는 숫자값이 같다.
  
// 참고할 코드
  // System.out.print("*");  // *를 출력한 뒤 줄을 바꾸지 않는다.
  // System.out.println();   // 줄 바꾸기
  
for(int row=1; row<=5; row++) {
    for(int star=1; star<=row; star++) {
      System.out.print("*");
    }
    System.out.println();
    
}
    
System.out.println();
  }

[ 6번 ]

public static void ex06() {
  // 삼각별 출력하기 - 2 (2중 loop)
  //     star=12345
  // row=1   *****
  // row=2   ****
  // row=3   ***
  // row=4   **
  // row=5   *
  //
  // row=1, star=12345
  // row=2, star=1234
  // row=3, star=123
  // row=4, star=12
  // row=5, star=1
  // 풀이법 : ↓ 
  // row와 스타의 시작값은 각각 1이다.
  // star의 종료값은 row 1일 때 5 .   2일 때 4.   이렇게 찾는다. 
  // *개발할 때 거꾸로 출력이라는 말은 없다. (숫자끼리 비교해서 값을 찾는 것)
  
  
for(int row=1; row<=5; row++) {
    for(int star=1; star<=6-row; star++) {
      System.out.print("*");
    }
    System.out.println();
  }  
}

[ 7번 ]

public static void ex07() {
    // 삼각별 출력하기 - 3 (2중 loop)
    //     space/star=123456789
    // row=1              *
    // row=2             ***
    // row=3            *****
    // row=4           *******
    // row=5          *********
    // 풀이법 : ↓  , 공백이 보였어야 풀 수 있다.
    // row=1, space=1234, star=5
    // row=2, space=123,  star=456
    // row=3, space=12,   star=34567
    // row=4, space=1,  star=2345678
    // row=5, space=0,    star=123456789

    
for(int row=1; row<=5; row++) {
      for(int space=1; space <= 5-row; space++) {
        //row 값과 space의 종료값을 더하면 5가 나온다.
        System.out.print(" ");
    }
    for(int star=6-row; star <= row+4; star++ ) {
      System.out.print("*");
    }
      System.out.println();
   }
      //star의 시작은 row의 시작과 비교해보면 된다. 1일때 5, 2일 때4  ... 더하면 6이다.
      //star의 종료는 row와 비교하면, 1일 때 5, 2일 때 6 ... 빼면 4이다.  = row + 4
  }

[ 8번 ]

public static void ex08() {
  // 삼각별 출력하기 - 4 (2중 loop)
  //        space/star=123456789
  // row=1             *********
  // row=2              *******
  // row=3               *****
  // row=4                ***
  // row=5                 *
  //
  // row=1, space=0,    star=123456789
  // row=2, space=1,    star=2345678
  // row=3, space=12,   star=34567
  // row=4, space=123,  star=456
  // row=5, space=1234, star=5
  
for(int row=1; row<=5; row++) {
    for(int space=1; space<=row-1; space++) {
      System.out.print(" ");
    }
  for(int star=row; star<=10-row; star++) {
      //row와 star의 종료값이 더하면 10인데, star의 값을 구하는 것이니 10-row 이다.
    System.out.print("*");
  }
  
System.out.println(" ");
  }
}
//별 모양 문제 못해도 웹개발이랑은 상관 없음.

[ 메인 메서드 ]

public static void main(String[] args) {
  
//String str1 = String.format("%d", 10);     // %d : format 코드 중 하나, 정수를 의미.
  //String str2 = String.format("%2d", 10);    // %2d : 2자리 정수로 출력해라
  //String str3 = String.format("%4d", 10);    // %4d : 4자리 정수로 출력해라
  
//String str4 = String.format("%-3d", 10);   // -를 붙이냐 안붙이냐에 따라 순서가 다름( -면 숫자가 앞으로감.)
  //String str5 = String.format("%-4d", 10);    
  
//System.out.print(str3 + str2 + str1);  //전체 폭을 n자리에 맞춰서 출력해라.(빈 곳은 공백처리됨)
  //System.out.println();
  //System.out.print(str4 + str5);
  
 //ex01();
 //ex02();
 //ex03();
 //ex04();
 //ex05();
 //ex06();
 //ex07();
 ex08();
}
profile
개인 아카이브

0개의 댓글