Dart 문제 {} 를 꼭 확인하자

SeonHo·2024년 9월 7일

Dart

목록 보기
12/13
post-thumbnail

크... 여러분 Dart class
이해가 안돼서 dart class 문제 없나? 하고
구글에 dart class 문제 검색 했는데
제가 올린 벨로그 글이 바로 네 번째에 있네요! ㅎㅎ

구글 알고리즘아 고맙다 ~ !!

문제: 화면 이미지 처럼 Student class 로 만들고
propertyname , scores
methodaverageScore , grade , display
averageScorescores 의 평균 점수를 return 하고
gradeaverageScore
기준으로 A,B,C,D,F 등급을 return 한다.
display : 학생의 점수, 평균, 학점, 이름을 출력 한다

먼저 학생 property , constructor 을 만들고

class Student {
  String name;
  List<int> listScores;
  
  Student(this.name, this.listScores)
}

method averageScore 에 평균 점수 구하는거 부터

double averageScore() {
  int score = 0;
  for(int i = 0; i < listScores.length; i++) {
    score += listScores[i];
    }
  return score / listScores.length;
}

처음 Type averageScoreint 로 해서
error 밑줄과 문제를 보니
평균 점수 가 소수였지 하고 double 로 수정 했었습니다. ㅋㅋ

그다음 method grade 등급 반환 작성해주고

String grade() {
  if (averageScore() >= 90 {
  	retrun 'A';
  } else if (averageScore() >= 80) {
      return 'B';
  } else if (averageScore() >= 70) {
     return 'C';
  } else if (averageScore() >= 60) {
     return 'D';
  } else {
     return 'F';
  }
}

console 에 이미지 처럼 display 을 작성해주고

void display() {
  print('이름: $name\n점수: $listScores\n
  평균 점수: $averageScore()\n학점: $grade()\n');
}

메인 함수 작성을 해줬습니다.

void main() {
  Student sang = Student('김희상', [85, 90, 92, 88]);
  sang.display();
  Student won = Student('최기원', [76, 80, 72, 64]);
  won.display();
}

그런데 출력 상태가 ?

method averageScore , grade
하나씩 찍어볼 때 element(값) 은 잘 나왔는데 말이죠...

코드를 잘 살펴보니 display 부분에 {} 중괄호를 안해줘서
그렇게 출력이 됬었습니다.
아주 푸르딩딩하게 나는 함수다 하고 나오네요.

그전까지 출력이 원하는 대로 안돼서 메인에 element 를 지정하면
classconstructor 가 입력한 값을 초기화가 되니
function 아규먼트와 파라미터 처럼
class methodaverageScore() , grade()
파라미터를 따로 입력해야 하나? 하고 생각 했습니다.

GPT 한테 물어보니
메서드는 이미 인스턴스의 상태(인스턴스 변수들)에 접근할 수 있으므로 추가적으로 파라미터로 전달할 필요가 없습니다.

class 에서 인스턴스 변수를 지정하고 constructor로 초기화를 하면 별도로 method에 파라미터를 안 넣어줘도 되는구나 하나 배웠습니다.

최종 코드

class Student {
  String name;
  List<int> listScores;

  Student(this.name, this.listScores);

  double averageScore() {
    int score = 0;
    for (int i = 0; i < listScores.length; i++) {
      score += listScores[i];
    }
    return score / listScores.length;
  }

  String grade() {
    if (averageScore() >= 90) {
      return 'A';
    } else if (averageScore() >= 80) {
      return 'B';
    } else if (averageScore() >= 70) {
      return 'C';
    } else if (averageScore() >= 60) {
      return 'D';
    } else {
      return 'F';
    }
  }

  void display() {
    print(
        '이름: $name\n점수: $listScores\n평균 점수: ${averageScore()}\n학점: ${grade()}\n');
  }
}

void main() {
  Student sang = Student('김희상', [85, 90, 92, 88]);
  sang.display();
  Student won = Student('최기원', [76, 80, 72, 64]);
  won.display();
}

class 너란 녀석 쉽지 않다.

profile
목표를 달성하자!

0개의 댓글