Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialtal Shnitzer
Courses Plus Student 5,242 Pointsgetter function - what is wrong with the switch statement?
I get that my conditional return the wrong level:
class Student {
constructor(gpa, credits){
this.gpa = gpa;
this.credits = credits;
}
stringGPA() {
return this.gpa.toString();
}
get level() {
switch (this.credits) {
case (this.credits>90):
return 'Senior';
break;
case (this.credits<=90 && this.credits>=61):
return 'Junior';
break;
case (this.credits<=60 && this.credits>=31):
return 'Sophomore';
break;
case (this.credits<=30 ):
return 'Freshman';
break;
default:
return 'Freshman';
}
}
}
const student = new Student(3.9);
can anyone tell me whats wrong with it?
class Student {
constructor(gpa, credits){
this.gpa = gpa;
this.credits = credits;
}
stringGPA() {
return this.gpa.toString();
}
get level() {
switch (this.credits) {
case (this.credits>90):
return 'Senior';
break;
case (this.credits<=90 && this.credits>=61):
return 'Junior';
break;
case (this.credits<=60 && this.credits>=31):
return 'Sophomore';
break;
case (this.credits<=30 ):
return 'Freshman';
break;
default:
return 'Freshman';
}
}
}
const student = new Student(3.9);
2 Answers
Hakim Rachidi
38,490 PointsUse an if statement
- I don't know why but with an if statement and the same conditionals it works fine (the challenge wants you to make one).
- Replace the initialization of student with this:
const student = new Student(3, 9);
use a comma to make the 9 the second parameter.
Here is a final shorten version:
class Student {
constructor(gpa, credits){
this.gpa = gpa;
this.credits = credits;
}
stringGPA() {
return this.gpa.toString();
}
get level() {
if (this.credits > 90) {
return 'Senior';
} else if (this.credits > 61) {
return 'Junior';
} else if (this.credits > 31) {
return 'Sophomore';
} else {
return 'Freshman';
}
}
}
const student = new Student(3, 9);
Hope this helps;
tal Shnitzer
Courses Plus Student 5,242 Pointsyes, the problem is in the switch. thanks
Andrew Huang
5,563 PointsYou should put the "expression" in switch(), not property
so code corrected as blow code:
Before
get level() {
switch (this.credits) { // expression
case (this.credits>90):
return 'Senior';
After
get level() {
switch (true) { // expression
case (this.credits>90):
return 'Senior';
tal Shnitzer
Courses Plus Student 5,242 Pointstal Shnitzer
Courses Plus Student 5,242 Pointsthis is the task: Inside the getter method use the conditional statement of your choice to determine the level of the student. If the value of the "credits" property is over 90, return 'Senior'. If it's between 61 and 90, return 'Junior'. If it's between 31 and 60, return 'Sophomore'. If it's 30 or less, return 'Freshman'.'