728x90
<5. StaticTest 클래스 빈칸채우기>
class Circle {
private int radius;
public Circle(int radius) {
this.radius = radius;
}
public int getRadius() {
return this.radius;
}
public void setRadius(int radius) {
this.radius = radius;
}
}
class CircleManager {
static void copy(Circle src, Circle dest) {
dest.setRadius(src.getRadius());
}
static boolean equals(Circle a, Circle b) {
if (a.getRadius() == b.getRadius())
return true;
else
return false;
}
}
public class StaticTest {
public static void main(String[] args) {
Circle pizza = new Circle(5);
Circle waffle = new Circle(1);
boolean res = CircleManager.equals(pizza, waffle);
if (res == true)
System.out.println("pizza와 waffle 크기 같음");
else
System.out.println("pizza와 waffle 크기 다름");
CircleManager.copy(pizza, waffle);
res = CircleManager.equals(pizza, waffle);
if (res == true)
System.out.println("pizza와 waffle 크기 같음");
else
System.out.println("pizza와 waffle 크기 다름");
}
}
static메소드는 객체없이도 클래스이름을 통해 접근할 수 있다는 걸 보여주는 예시네요!
<6. Box클래스 이용하기>
public class Box {
private int width, height;
private char fillChar;
public Box() {
this(10, 1);
}
public Box(int width, int height) {
this.width = width;
this.height = height;
}
public void draw() {
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++)
System.out.print(fillChar);
System.out.println();
}
}
public void fill(char c) {
this.fillChar = c;
}
public static void main(String[] args) {
Box a = new Box();
Box b = new Box(20 ,3);
a.fill('*');
b.fill('%');
a.draw();
b.draw();
}
}
교재 연습문제는 대부분 main을 포함하는 public 클래스를 이용해서 만드네요.
교수님께서는 public 클래스는 main을 포함하는 역할만 하는 게 좋다고 하셨습니다. 따로 class를 만드는 것도 연습해야겠습니다.
<Bonus 1 Gambling게임>
import java.util.Scanner;
class Player {
private String name;
public Player(String name) { this.name = name; }
public String getName() { return name; }
}
public class GamblingGame {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Player []p = new Player[2];
for (int i =0; i<2; i++) {
System.out.println("선수 이름 입력 >>");
p[i] = new Player(scanner.next());
}
int n =0;
while (true) {
System.out.println(p[n].getName()+ " <Enter 외 아무키나 치세요");
scanner.next();
int [] val = new int[3];
for (int i =0; i<val.length; i++) {
val[i] = (int)(Math.random()*3);
System.out.print(val[i] + "\t");
}
System.out.println();
if (val[0] == val[1] && val[1] == val[2]) {
System.out.println(p[n].getName() + "이 승리하였습니다.");
break;
}
n++;
n = n%2;
}
scanner.close();
}
}
값 3개가 같은지를 비교할 땐
val[0] == val[1] && val[1] == val[2] 이렇게 써야합니다.
val[0] == val[1] == val[2] 이렇게 써버리면 먼저 계산된 값이 true로 반환되어
true == val[2] 이렇게 boolean값과 정수값의 비교연산이 적용되게 됩니다. 당연히 에러가 발생하겠죠?
이것 말고는 딱히 어려운 게 없는 것 같습니다.
이번 문제들은 전부 빈칸채우기여서 쉬웠네요
728x90
'프로그래밍 언어 > javastudy' 카테고리의 다른 글
명품 Java Essential 5단원 실습문제 #1 (0) | 2021.07.14 |
---|---|
명품 자바 에센셜 5단원/ Bear와 Fish 먹기 게임 (0) | 2021.07.13 |
명품 Java Essential 4단원 실습문제 #1 (0) | 2021.07.11 |
명품 Java Essential 4단원 끝말잇기 게임/ scanner에서 NoSuchElementException 예외발생 대처 (0) | 2021.07.10 |
명품 Java Essential 3단원 실습문제 (3) | 2021.07.07 |