분류 전체보기

/*
새
*/
import java.util.*;

class Bird {
  int x;
  int y;

  Bird() {
  }

  Bird(int x, int y) {
    this.x = x;
    this.y = y;
  }

  void fly() {
    Random rnd = new Random();
    switch (rnd.nextInt(4)) {
      case 0:
        x++;
        break;
      case 1:
        x = (x < 0) ? 0 : x - 1;
        break;
      case 2:
        y++;
        break;
      default:
        y = (y < 0) ? 0 : y - 1;
        break;
    }
    System.out.println("트위터의 위치 : " +
      "(" + x + ", " + y + ")");
  }

  public static void main(String[] args) {
    Bird twitter = new Bird(10, 5);

    for (int i = 0; i < 10; i++) {
      twitter.fly();
    }
  }
}
/*
고양이 톰
*/
class Cat {
  static final int MAX = 3;
  int x;
  int y;

  void goNorth(int distance, Bird bird) {
    y += (distance > MAX) ? MAX : distance;

    if (x == bird.x && y == bird.y) {
      System.out.println("톰이 트위터를 잡았습니다.");
      System.exit(0);
    }
    System.out.println("톰의 위치: (" + x + ", " + y + ")");
    bird.fly();
  }

  void goSouth(int distance, Bird bird) {
    y -= (distance > MAX) ? MAX : distance;
    y = (y < 0) ? 0: y;

    if (x == bird.x && y == bird.y) {
      System.out.println("톰이 트위터를 잡았습니다.");
      System.exit(0);
    }
    System.out.println("톰의 위치: (" + x + ", " + y + ")");
    bird.fly();
  }

  void goEast(int distance, Bird bird) {
    x += (distance > MAX) ? MAX : distance;

    if (x == bird.x && y == bird.y) {
      System.out.println("톰이 트위터를 잡았습니다.");
      System.exit(0);
    }
    System.out.println("톰의 위치: (" + x + ", " + y + ")");
    bird.fly();
  }

  void goWest(int distance, Bird bird) {
    x -= (distance > MAX) ? MAX : distance;
    x = (x < 0) ? 0: x;

    if (x == bird.x && y == bird.y) {
      System.out.println("톰이 트위터를 잡았습니다.");
      System.exit(0);
    }
    System.out.println("톰의 위치: (" + x + ", " + y + ")");
    bird.fly();
  }

  public static void main(String[] args) {
    Cat tom = new Cat();
    Bird twitter = new Bird(5, 5);

    tom.goNorth(2, twitter);
    tom.goNorth(3, twitter);
    tom.goEast(1, twitter);
    tom.goWest(5, twitter);
  }
}
/*
톰과 트위터
*/
import java.util.Scanner;

class Stage3 {
  public static void main(String[] args) {
    int x = 0;
    int y = 0;
    Cat tom = new Cat();
    Bird twitter = new Bird(10, 10);

    System.out.println("트위터 잡기 시작!");

    twitter.fly();

    while(true) {
      Scanner input = new Scanner(System.in);
      String cmd = input.next();

      if (cmd.equals("e") || cmd.equals("E")) {
        tom.goEast(input.nextInt(), twitter);
      } else if (cmd.equals("w") || cmd.equals("W")) {
        tom.goWest(input.nextInt(), twitter);
      } else if (cmd.equals("n") || cmd.equals("N")) {
        tom.goNorth(input.nextInt(), twitter);
      } else if (cmd.equals("w") || cmd.equals("W")) {
        tom.goSouth(input.nextInt(), twitter);
      } else {
        System.out.println("에러!!");
      }
    }
  }
}


연습문제 8월 18일자

2009. 8. 19. 00:36

8월15일 연습예제

거북이 구현하기

/*
거북이
*/
class Tuttle {
  int x;
  int y;
  int speed;

  void initialize() {
    x = 0;
    y = 0;
    speed = 0;
  }

  void stop() {
    speed = 0;
  }

  void speedUp() {
    speed++;
  }

  void speedDown() {
    speed = (speed <= 0) ? 0 : speed - 1;
  }

  void goNorth() {
    y++;
  }

  void goSouth() {
    y = (y <= 0) ? 0 : y - 1;
  }

  void goEast() {
    x++;
  }

  void goWest() {
    x = (x <= 0) ? 0 : x - 1;
  }

  void getStatus() {
    System.out.println("거북이의 위치는 " +
        "(" + x + ", " + y + ")이고, ");
    System.out.println("속도는 " +
        speed + "m/h입니다.");
  }

  public static void main(String[] args) {
    Tuttle t = new Tuttle();
    t.speedUp();
    t.goNorth();
    t.getStatus();
  }
}

탱크로 벽 부수기

/*
탱크
*/
class Tank {
  void shoot(Wall w) {
    w.strike();
  }
}
/*
무너저내리는 벽
*/

class Wall {
  public int durability;
  
  Wall() {
    durability = 10;
  }

  void strike(int power) {
    System.out.println("꽝!");
    durability -= power;
    if (durability > 0) {  
      System.out.println("현재 내구력 : " + durability);
    } else {
      crumble();
    }
  }

  void crumble() {
    System.out.println("와르르!!");
  }
}
/*
벽돌 벽
*/
class Brick extends Wall {
  Brick() {
    durability = 5;
  }
}
/*
탱크로 벽 맞추기
*/
class Stage {
  public static void main(String[] arg) {
    Brick w1 = new Brick();
    Wall w2 = new Wall();
    Tank2 t = new Tank2();

    t.shootGun(w1);
    t.shootGun(w1);
    t.shootCannon(w1);
    }
}

총과 대포를 발사하는 탱크

/*
탱크
*/
class Tank2 {
  void shootGun(Wall w) {
    w.strike(1);
  }

  void shootCannon(Wall w) {
    w.strike(5);
  }
}

거북이 벽에 부딪치다.

/*
장애물 탐지 거북이
*/
class Tuttle2 {
  int x;
  int y;

  void goNorth(Wall2 w) {
    y++;
    if (x >= w.x1 && x <= w.x2
        && y == w.y1) {
      shriek();
      w.soundEffect();
    }
  }

  void goSouth(Wall2 w) {
    y = (y < 0) ? 0 : y - 1;
    if (x >= w.x1 && x <= w.x2
        && y == w.y1) {
      shriek();
      w.soundEffect();
    }
  }

  void goEast(Wall2 w) {
    x++;
    if (x >= w.x1 && x <= w.x2
        && y == w.y1) {
      shriek();
      w.soundEffect();
    }
  }

  void goWest(Wall2 w) {
    x = (x < 0) ? 0 : x - 1;
    if (x >= w.x1 && x <= w.x2
        && y == w.y1) {
      shriek();
      w.soundEffect();
    }
  }

  void shriek() {
    System.out.println("꽥!");
  }
}
/*
길이 요소를 갖는 벽
*/
class Wall2 {
  int x1;
  int y1;
  int x2;
  int y2;

  void soundEffect() {
    System.out.println("꽝!!");
  }

  Wall2() {
  }

  Wall2(int x1, int y1, int x2, int y2) {
    this.x1 = x1;
    this.y1 = y1;
    this.x2 = x2;
    this.y2 = y2;
  }
}
class Stage2 {
  public static void main(String[] args) {
    Wall2 w = new Wall2(5, 5, 9, 10);
    Tuttle2 t = new Tuttle2();

    t.goEast(w);
    t.goEast(w);
    t.goEast(w);
    t.goEast(w);
    t.goEast(w);
    t.goEast(w);
    t.goNorth(w);
    t.goNorth(w);
    t.goNorth(w);
    t.goNorth(w);
    t.goNorth(w);
    t.goNorth(w);
    t.goNorth(w);
  }
}
/*
1에서 4사이의 난수 발생
*/
import java.util.Random;

class GenRandom {
  public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
      Random rnd = new Random();
      System.out.print(
          rnd.nextInt(4) + " ");
    }
    System.out.println();
  }
}
/*
커맨드 라인 입력 받기
*/
import java.util.Scanner;

class CmdInput {
  public static void main(String[] args) {
    System.out.print("입력하세요: ");
    Scanner sc = new Scanner(System.in);
    System.out.println("입력한 문자는 : ");
    while (sc.hasNext()) {
        System.out.println(sc.next());
    }
    sc = null;
  }
}

예제 8월 14일

2009. 8. 17. 01:20
class Hakjum {
  public static void main(String[] args) {
    int kor = new Integer(args[0]);
    int eng = new Integer(args[1]);
    int mat = new Integer(args[2]);
    int sum = kor + eng + mat;
    int avg = sum / 3;
    String hakjum = "가";

    if (avg > 100 || avg < 0) {
      System.out.println("입력 오류");
    /* } else if (avg >= 90) { */
    } else {
      switch (avg / 10) {
        case 10:
        case 9:
          hakjum = "수";
          break;
        case 8:
          hakjum = "우";
          break;
        case 7:
          hakjum = "미";
          break;
        case 6:
          hakjum = "양";
          break;
        default:
          hakjum = "가";
          break;
      }
    }
  }
}
/*
for문
*/
class Loop {
  public static void main(String[] args) {
    int count = 0;
    for (int i = 13; i >= 2; i -= 2) {
      count += 1;
    }
    System.out.println("FOR문은 " + count +
      "번 실행됩니다.");
  }
}
/*
http://jeongsam.net
잔돈 계산
(조건)
잔돈은 1,000원, 100원, 10원 3종류가 있음.
(실행)
java Jandon 1560
(출력)
1560원은
1,000원 1개
100원 5개
10원 6개
*/

class Jandon {
  public static void main(String[] args) {
    System.out.println(args[0] + "원은");
    for (int i = 1000, count = new Integer(args[0]) / 1000, 
        don = new Integer(args[0]) % 1000;
        i >= 10;
        i /= 10, count = don / i, don %= i) {
      System.out.println(i + ": " + don);
      System.out.println(i + "원 : " + count + " 개");
    }
  }
}
    /*
    for (int i = 1000; i >= 10 ; i /= 10) {
      int count = don / i;
      don %= i;
      System.out.println(i + "원 : " + count + " 개");
    } */
    /*
    for (int i = 0; i < 3; i++) {
      switch(i) {
        case 0:
          t = don / 1000;
          don = don % 1000;
          break;
        case 1:
          h = don / 100;
          don = don % 100;
          break;
        default:
          ten = don / 10;
          break;
      }
    } */
/*
요일출력
1일이 토요일로 가정
(조건)
0:일요일, 1:월요일, 2:화요일, ..., 6:토요일
(실행)
java GetDays 14
(출력)
오늘은 금요일입니다.
*/
class MyCalendar {
  public static void main(String[] args) {
    int count = 0;
    System.out.println("\t일\t월\t화\t수\t목\t금\t토");	
    for (int i = 1; i <= 6; i++) {
      count++;
      System.out.print("\t");
    }
    for (int i = 1; i <= 31 ;i++) {
      System.out.print("\t" + i);
      count++;
      if (count % 7 == 0) System.out.println();
    }
  }
}

예제 8월 13일

2009. 8. 17. 01:14
class 가산기 {
  public static void main(String[] args) {
    System.out.println("결과: " +
        (new Integer(args[0]) + new Integer(args[1])));
  }
} /* run: java 가산기 50 60 */
/*
두수를 입력받아 큰 수를 출력하는 프로그램
(실행)
java GT 68 78
(출력)
78이 68보다 큽니다.
/*
class GT {
  public static main(String[] args) {
    if (Integer.parseInt(args[0]) > Integer.parseInt(args[1])) {
      System.out.println(args[0] + "은 " +
          args[1] + "보다 큽니다.");
    } else {
      System.out.println(args[1] + "은 " +
          args[0] + "보다 큽니다.");
    }
  }
}

class GT {
  public static main(String[] args) {
    int a = Integer.parseInt(args[0]);
    int b = Integer.parseInt(args[1]);

    System.out.println(((a > b) ? a : b) + "은 " +
        ((a < b) ? a : b) + "보다 큽니다.");
  }
}
/* 세 수를 입력받아 가장 큰 수를 출력
(실행)
java Max 10 15 3
(출력)
10, 15, 3 중 가장 큰 수는 15입니다.
*/
class Max {
  public static void main(String[] args) {
    int i = Integer.parseInt(args[0]);
    int j = Integer.parseInt(args[1]);
    int k = Integer.parseInt(args[2]);
    int max = -9999;
    
    if (i > j) {
      if (i > k) {
        max = i;
      } else {
        max = k;
      }
    } else {
      if (j > k) {
        max = j;
      } else {
        max = k;
      }
    }

    System.out.println(i + ", " + j + ", " + k + "중 가장 큰수는" +
        max + "입니다.");
  }
}
class Max2 {
  public static void main(String[] args) {
    int number = Integer.parseInt(args[0]);
    int max = number;

    for (int i = 1; i < args.length; i++) {
      number = Integer.parseInt(args[i]);

      // if (max < number) max = number;
      max = (max < number) ? number : max ;
    }

    System.out.println("최대값 : " + max);
  }
}
class 계산기 {
  public static void main(String[] args) {
    int result = 0;

    if (args[1].equals("+")) {
      result = new Integer(args[0]) + new Integer(args[2]);
    } else if (args[1].equals("-")) {
      result = new Integer(args[0]) - new Integer(args[2]);
    } else if (args[1].equals("*")) {
      result = new Integer(args[0]) * new Integer(args[2]);
    } else {
      result = new Integer(args[0]) / new Integer(args[2]);
    }

    System.out.prinln(args[0] + " " + args[1] + " " + args[2] +
        " = " + result);
  }
}

예제 8월 12일

2009. 8. 17. 01:09
/*
비교 연산자
== : 같다
!= : 다르다
> : 크다
>= : 크거나 같다
< : 작다
<= : 작거나 같다
*/
class Example0812 {
  public static void main(String[] args) {
    int i = 9, j = 10;
    
    System.out.println("조건결과 : " + ((i + 1) != j));
    if ((i + 1) != j) {
       System.out.println(i + "은 " + j
           + "보다 작습니다.");
    } else {
       System.out.println(i + "은 " + j
           + "보다 큽니다.");
    }
  }
}
<연습문제>
3. 다음 조건을 만족하도록 프로그래밍하세요.
(조건)
자동차 프로그램을 만들기 위해 클래스의 이름은 Car로 지정.
속도를 저장하기 위해 speed 변수 선언후 적당한 값으로 초기화할 것.
0km 미만 속도일 경우 "후진"
0 ~ 60km 일 경우 "경제속도"
61 ~ 100km 일 경우 "고속"
100km 초과일 경우 "과속"으로 출력할 것

(출력 예)
현재 속도는 89km이며, 고속 주행 중입니다.
class Hakjum {
  public static void main(String[] args) {
    int kor = 98, eng = 80, mat = 89;
    int sum = kor + eng + mat;
    int avg = sum / 3;
    String msg = "";

    if (avg > 100) {
      msg = "입력 초과";
    } else if (avg < 0) {
      msg = "입력 초과";
    } else if (avg >= 90) {
      msg = "수";
    } else if (avg >= 80) {
      msg = "우";
    } else if (avg >= 70) {
      msg = "미";
    } else if (avg >= 60) {
      msg = "양";
    } else {
      msg = "가";
    }

    if (avg > 100 || avg < 0) {
      System.out.println(msg);
    } else {
      (System.out.println("학점은 " + msg +
        "입니다.");
    }
  }
}
<연습문제>
2. 다음 조건을 만족하는 프로그램을 작성하세요.
조건)
i = 10, j = 20, k = 30 일때
세 변수의 합이 60을 초과하면 "참 잘했습니다."
60이하이면 "분발하세요"를 출력

출력)
i : 10, j : 20, k : 30
세 변수의 합 : ??
참 잘했습니다. or 분발하세요

class Ex0812b {
  public static void main(String[] args) {
    int i = 10, j = 20, k = 30;
    System.out.println("세 변수의 합" +
        (i + j + k));
    System.out.println(
      ((i + j + k) > 60) ? "참 잘했습니다." : "분발하세요.");
    /* if ((i + j + k) > 60) {
      System.out.println("참 잘했습니다.");
    } else {
      System.out.println("분발하세요.");
    } */
  }
}
class LogicalTest {
  public static void main(String[] args) {
    boolean bVal1 = true;
    boolean bVal2 = false;
    int iVal1 = 10, iVal2 = 20;

    System.out.println(bVal1 || bVal2);
    System.out.println(bVal1 && !bVal2);
    System.out.println(!(bVal2 || bVal1));
    System.out.println(!bVal2 && !bVal1);
    System.out.println((iVa1 > iVal2) && (iVal2 < iVal1));

    iVal1 = true; /* IVAL = 1 , ival1 = true; */
    MYBIRTHDAT myBirthday
  }
}
<연습문제>
1. 다음 조건을 만족하는 프로그램을 작성하세요.
i = 10, j = 20 일때
i * j > j * (i - 3) 의 결과를 출력
(출력예)
i와 j의 값은 각각 '10'과 '20'입니다.
조건 결과는 ?? 입니다.

class Ex0812a {
  public static void main(String[] args) {
    int i = 10, j = 20;
    System.out.println("i와 j의 값은 각각 '" +
        i + "'과 '" + j + "입니다.");
    System.out.println("조건 결과는 " +
        i * j > j * (i - 3) + "입니다.");
  }
}

+ Recent posts