Подсчет количества констант в enum. Где ошибка?
Дано скрытое перечисление с некоторыми константами в верхнем регистре.
Напишите программу, которая подсчитывает, сколько констант в перечислении начинается сo «STAR».
public class TheSecretEnumeration {
public static void main(String[] args) {
int count = 0;
for (Secret secret : Secret.values()) {
if (secret.startsWith("STAR")) {
count++;
System.out.println(count);
}
}
}
}
enum Secret {
STAR, CRASH, START;
String str;
Secret(String str) {
this.str = str;
}
Secret() {
}
public boolean startsWith(String star) {
return true;
}
}
В задаче дан шаблон:
public class Main {
public static void main(String[] args) {
}
}
/* At least two constants start with STAR
enum Secret {
STAR, CRASH, START, // ...
}
*/
Ответы (3 шт):
Автор решения: Igor
→ Ссылка
int count = 0;
for (Secret secret : Secret.values()) {
if (secret.name().startsWith("STAR")) {
count++;
}
}
System.out.println(count);
https://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html#name()
Автор решения: dmtr
→ Ссылка
Пока писал ответ, увидел, что @Igor уже обновил свой ответ.
Добавлю, что можно так же через
secret.toString().startsWith("STAR");
но это не есть лучшая практика, т.к. метод toString() может быть переопределен для значений Enum, и его результат к тому моменту уже может не соответствовать ожиданиям.
Автор решения: komrad.rediska2
→ Ссылка
public class Main {
public static void main(String[] args) {
int count = 0;
for (Secret secret : Secret.values()) {
if (secret.toString ().startsWith("STAR")) {
count++;
}
}
System.out.println(count);
}
}
enum Secret {
STAR, CRASH, START, // ...
}
Из-за чего появляется ошибка
Compilation error Main.java:18: error: duplicate class: Secret enum Secret {