inflearn logo
강의

Course

Instructor

Learning Java through Pictures, Part 2: Object Orientation!

클래스 실행 순서가 궁금합니다.

Resolved

662

하람

1 asked

0

정답 코드 입니다.

public class PlayerTest {
  public static void main(String[] args) {
    // 점수 배열 생성
    int[] points0 = { 10, 9, 9, 8 };
    int[] points1 = { 9, 10, 9, 9 };
    int[] points2 = { 10, 9, 10, 10 };
    
    // 선수 객체 생성
    Player p0 = new Player("Kim", points0);
    Player p1 = new Player("Lee", points1);
    Player p2 = new Player("Park", points2);
    
    // 객체 배열 만들기
    Player[] players = { p0, p1, p2 };
    
    // 선수별 총점 출력
    for (int i = 0; i < players.length; i++) {
      players[i].printTotalPoints();
    }
  }
}

class Player {
  // 필드
  String name;  // 이름
  int[] points; // 점수
  
  // 생성자
  Player(String str, int[] arr) {
    name = str;
    points = arr;
  }
  
  // 메소드
  void printTotalPoints() {
    /* 2. 형식 문자열을 만드세요. */
    System.out.printf("%s -> %d점\n", name, totalPoints());
  }
  
  int totalPoints() {
    int sum = 0;
    for(int i = 0; i < points.length; i++){
      sum += points[i];
    }
    return sum;
  }
} 

 위의 코드에서 'totalPoints()'메소드를 안에있는 for문 조건식 i<points.length;대신 점수 배열을 크키를 구하는데 저는 main메소드가 먼저 실행되는 것으로 알고 있어 points0 배열이 생성될 때 값도 대입했기 때문에 바로 크기를 알 수 있을 것으로 판단해 아래와 같이 points0.length 또는 points[i].length를 사용하려고 했으나 불가능하였습니다.


for(int i = 0; i < points0.length; i++){
      sum += points[i];
    }

 

혹시나 main 메소드 부터 실행되는 것이 아니라면 points변수에 static을 부여해 프로그램이 시작하자마자 점수 배열을 생성을 하고 point[i].length를 사용해봤으나 'illegal start of expression' 라며 잘못된 표현이라는 에러가 나왔습니다.

   static int[] points0 = { 10, 9, 9, 8 };
   static int[] points1 = { 9, 10, 9, 9 };
   static int[] points2 = { 10, 9, 10, 10 };

 

위와 같은 방법으로 풀면 왜 에러가 나는지 궁금합니다!

 

 

객체지향 oop java

Answer 2

1

hongpark

point0 은 main 메소드 안에 존재하는 변수입니다.
따라서, totalPoints() 메소드 내에서 사용할 수 없습니다.

 totalPoints() 메소드에서 사용할 수 있는 변수는
3가지. name, points, sum입니다

변수의 스코프,
클래스 스코프,
메소드 스코프 등을 리뷰해보세요

0

하람

해답을 찾았습니다. 기초가 부족해 잠시 클래스 간의 관계를 헷갈렸습니다.

Player 클래스는 PlayerTest 클래스 안의 필드에 대한 정보가 없기 때문에 에러가 나온 것입니다.

참 간단한건데 기초가 부족하다보니 이런게 아직도 헷갈리네요 ㅎㅎ그래도 재밌습니다!

객체지향 Java 파트2 붕어빵 문제 질문 있습니다.

0

140

2

11장 연습문제 6번

0

156

3

출력값이 다르다고 나오네요!

0

321

1

연습문제 이클립스에서는 되는데요

0

265

1

객체 배열과 반복문 강의 중

0

382

2

자바api주사위통계 예제2번 질문있습니다

0

314

1

자바를 부탁해 질문

0

675

1

질문있습니다.

0

329

1

강의 정리 내용

0

332

1

유튜버 강의와 차이점 문의드립니다.

0

318

1

홍팍님 교재 문의

0

294

1

외부로부터 감추기 문제 질문

0

235

1

클래스가 다른데 메소드를 어떻게 가져오는건가요?

0

240

1

객체 생성할 때 매개변수에 new연산자는 왜 붙인건가요?

0

307

1

안녕하세요. 생성자관련?하여 질문드립니다.

0

206

1

홍팍쌤 안녕하세요

0

217

1

다형성(?)에대해 질문드립니다.

0

215

1

생성자

0

279

1

Object최상위 클래스에

0

209

1

질문있습니다.

0

166

1

질문있습니다.

0

152

1

void 질문있습니다.

0

178

1

return에 대해 질문있습니다

0

210

1

생성자를 만들어야 하는 이유

0

245

1