티스토리 뷰
물 한컵당 1~10사이의 랜덤의 물이 있다.
사람은 3명이 존재하며 당연히도 각기 다른 객체로써 존재한다.
사람 3명에게 각각 물 10컵씩을 지급한다. 물 또한 각기 다른 객체로써 존재한다
힌트 : 사람(3) x 물컵(10) = 총 물 30컵이 필요할것이다.
사람 3명에게 물을 각각 10컵을 지급을 완료했다면 물의 총량이 가장 많은 사람이 승리하게 된다.
다시 한번 객체지향의 의미를 파악하며 코드를 짜보자.
정답 공개 !
package hihihi;
import java.util.Random;
import java.util.Scanner;
//물 클래스
class Water{
Random r = new Random();
int num;
Water(){
num = r.nextInt(10)+1;
}
}
//물을 받는 사람 클래스
class Humanget{
Water[] w;
int result = 0;
public void TotalWater() {
for(int i=0;i<w.length;i++) {
w[i] = new Water();
result += w[i].num;
}
}
}
public class protect {
public static void main(String[] args) {
Water[][] w = new Water[3][10];
for(int i=0;i<w.length;i++) {
for(int j=0;j<w[i].length;j++) {
w[i][j] = new Water(); //물 3 x 10 객체 생성
}
}
Humanget[] h = new Humanget[3];
for(int i=0;i<h.length;i++) {
h[i] = new Humanget(); //사람 3 객체 생성
h[i].w = w[i];
h[i].TotalWater();
}
int[] array = new int[3];
array[0] = h[0].result;
array[1] = h[1].result;
array[2] = h[2].result;
int max = array[0];
int j = 0;
for(int i=0;i<array.length;i++) {
if(max < array[i]) {
max = array[i];
j = i;
}
}
System.out.println((j+1) + "번째 사람이 " + max +" 값으로 승리하였습니다.");
System.out.println("----------최종 결과 발표------------");
System.out.println("1번 사람 : " + array[0]);
System.out.println("2번 사람 : " + array[1]);
System.out.println("3번 사람 : " + array[2]);
}
}
내가 지금 올리고있는 자바의 문제들은 전부 학원 강사님께서 내주신 문제들이다.
이 문제 또한 학원에서 푼 기억이 있는데 다시 풀려고 하니 뭔가 헷갈렸다. 잘 한 것인지는 모르겠으나 기존의 했던 방식이 기억이 안나 그냥 내 식대로 해결해보았다.
1.각각 물 클래스와 사람 클래스를 만들어주었다.
2. 물 클래스에서는 num이라는 변수에 1~10사이의 임의의 값을 넣어주었다.
3. 사람 클래스가 여기서는 핵심인데 사람 클래스에서는 물 10컵을 받아야 하므로 물 클래스를 배열 형태로 받아주었다.
4. 배열의 크기만큼 객체를 생성해주었고 물 배열의 값들을 result 변수에 전부 누적하여서 사람이 가지고 있는 물의 총양을 알아낼수있게 하였다.
5. 메인에서도 중요한데 물객체를 [3][10] 생성해주었고 사람객체는 [3]명을 생성해주었다.
6. 사람객체 한명당 물 10컵씩을 넣어주었다
ex) 첫번째 사람 = 물[0] / 두번째 사람 = 물[1] / 세번째 사람 = 물[2]
7. 그리고 사람객체가 가지고 있는 물들의 누적값을 메소드를 이용하여 계산하였다.
8. 5,6,7번은 같은 for문안에서 동시에 이루어지게끔 하였다.
9. 그 후에는 int[] array에 1~3번 사람의 물을 순서대로 넣어주었고 최대값과 최대값이 있는 위치의 인덱스를 추출하여
10. 결과를 출력해주면 끝 !
감사합니다.
'프로그래밍 언어 복습 > JAVA' 카테고리의 다른 글
#33 JAVA (번외) 숫자야구게임 함수화 풀이 (0) | 2022.05.23 |
---|---|
#32 JAVA (번외) 낚시게임 함수화 풀이 (0) | 2022.05.23 |
#30 JAVA 포켓몬 문제 (0) | 2022.05.23 |
#29 JAVA 주사위 클래스 게임 (0) | 2022.05.23 |
#28 JAVA 낚시게임 클래스화 하기 (0) | 2022.05.21 |