클래스는 주말에 한번 더 정리하자 도대체 어려워서말야,,휴
System.out.println(Math.random());
=> Math.random() : 0 < 값 <=1 : 값은 double로 나온다
(int)(Math.random()*6) + 1
=>
0x6+1 = 1 //0~5까지가 아니라 1~6까지 나오게하기위해서 +1을 해준다!
0.1203x6+1 = 0.72+1 = 1.72 => 1
0.99999x6+1 = 5.99+1 = 6.99 => 6
=> *6 은 끝나는시점 +1은 시작하는 시점 이라고 생각!
(int)(Math.random()*20) + 51
=> 51부터 시작하니까 +51, 51부터 70까지는 20번 도니까 *20
=> 70-51 =19 51을 빼먹는꼴이 되니까 여기서 +1을 해줘야지 20번!
(int)(Math.random()*7) + 6
=> 6부터 시작하니까 +6, 6부터 12까지는 7번 도니까 *7
=> 12-6 = 6 +1 = 7번!
뼈대코드의 main() 메소드를 그대로 사용할 것Math.random() 1과 6 사이의 숫자를 반환하는 dice() 메소드를 구현할 것
1달러의 환율은 1082.25108원!
출력예)
획득금액 : $12.00(12987원)
package day17.quiz;
public class Gamble {
public static void main(String[] args) {
double dollar = dice() + dice() + dice();
double won = exchange(dollar);
System.out.printf("획득 금액: $%.2f(%.0f원)", dollar, won);
}
public static int dice() {
return (int)(Math.random()*6) + 1;
}
public static double exchange(double dollar) {
return dollar * 1082.25108;
}
}
=> dice() 메소드를 구현해보는 문제이다!
=> dice() 메소드를 부르면 return 값으로 1~6까지 숫자를 랜덤으로 나오게 해야 하는데
이때의 코드는 (int)(Math.random()6) +1; 이다!
1부터(+1) 6까지(6) 정수로 나오게 해야하니까 형변환!
=> 그리고 달러를 원으로 환전한다!
exchange(dollar) 메소드를 부르면 return값으로 dollar * 1082.25108를 하면 환전되겠죠~!
클래스 + 클래스 (상호작용, 이용, 포함, 상속)
class LectureRoom
BeamProjector bp; //빔프로젝터 클래스 변수
Aircon ac; //에어컨 객체 1개
Desk[] dskArray; //책상 객체 여러개
클래스 + 배열
<메인클래스>
BeamProjector[] bpArr = new BeamProjector[3];
bpArr[0] = new BeamProjector(); // 각자 new 해서 생성자 호출해서 객체 생성해야한다!
bpArr[1] = new BeamProjector(); // 생성자 호출 객체 생성
bpArr[2] = new BeamProjector();
// 배열은 각 행마다 new 해서 생성자호출해서 객체를 생성해야 한다!!
=>
BeamProjector[] bpArr = new BeamProjector[3];
클래스[] 변수명 = new 클래스[3];
int[] arr = new int[3];
※주의※
외부클래스 내부클래스가 있다고 쳐
1. 내부클래스에서 만든 static이 아닌 일반 필드변수,메소드()는 외부클래스에서 사용하려면 new로 객체를 만든 다음에 사용할 수 있다.
2. 내부클래스에서 만든 static변수,메소드()는 외부클래스에서 new로 생성하지 않고 클래스명.변수,메소드()로 사용할 수 있다!
ex)
내부클래스
<필드>
static double pi = 3.14; //정적(static) 멤버 변수
String color; //인스턴스 멤버 변수
<메소드>
void powerOn() { //인스턴스 멤버 메소드
System.out.println("전원 On");
}
static void printInfoStatic() { //static 메소드
//powerOn(); //인스턴스 메소드(태어나지않은) //정적->인스턴스x
//System.out.println("컬러 계산기" + color); //인스턴스 변수(태어나지않은) //정적->인스턴스x
calculateCircleArea(5); //static끼리는 가능
System.out.println("원주율 : " + pi);
}
외부클래스
★color 변수를 쓰기 위해서는
Calculator cal1 = new Calculator(); //cal1 인스턴스 생성
cal1.color = "검정";
★powerOn() 메소드를 쓰기 위해서는
cal1.powerOn();
이런식으로 new로 cal1이라는 객체를 만든 다음 사용가능!
static이 아닌 그냥 메소드는 new를 하고나서 쓸 수 있다!
★pi를 쓰기 위해서는
System.out.println("static 변수 pi 값 : " + Calculator.pi);
new안하고 바로 Calculator.pi 이런식으로 사용가능!
★printInfoStatic() 메소드를 쓰기 위해서는
Calculator.printInfoStatic(); 이런식으로 클래스명.메소드(); 로 사용 가능!
!!!!!근데!!!!! static 메소드에는 인스턴스 변수,메소드를 쓸 수 없다 이미 태어난 애들 안에 안태어난 애들이 존재할 수는 없으니!