클래스는 주말에 한번 더 정리하자 도대체 어려워서말야,,휴

랜덤값 생성하기

System.out.println(Math.random());

=> Math.random() : 0 < 값 <=1 : 값은 double로 나온다

  1. 1~6
(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은 시작하는 시점 이라고 생각!

  1. 51~70
(int)(Math.random()*20) + 51

=> 51부터 시작하니까 +51, 51부터 70까지는 20번 도니까 *20

=> 70-51 =19 51을 빼먹는꼴이 되니까 여기서 +1을 해줘야지 20번!

  1. 6~12
(int)(Math.random()*7) + 6

=> 6부터 시작하니까 +6, 6부터 12까지는 7번 도니까 *7

=> 12-6 = 6 +1 = 7번!

✏️연습문제1

뼈대코드의 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를 하면 환전되겠죠~!

클래스

  1. 클래스 + 클래스 (상호작용, 이용, 포함, 상속)
    class LectureRoom
    BeamProjector bp; //빔프로젝터 클래스 변수
    Aircon ac; //에어컨 객체 1개
    Desk[] dskArray; //책상 객체 여러개

  2. 클래스 + 배열
    <메인클래스>

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. 메소드(생성자) + 클래스
  2. 메소드 + 배열
  3. ArrayList -> 더 편한 배열

※주의※
외부클래스 내부클래스가 있다고 쳐
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 메소드에는 인스턴스 변수,메소드를 쓸 수 없다 이미 태어난 애들 안에 안태어난 애들이 존재할 수는 없으니!

profile
뒤죽박죽 벨로그

0개의 댓글

관련 채용 정보