O que eu faria seria:
- Extrair a pontuação de cada letra para um enum
- Interar a cada letra buscando o valor da letra no enum
Dessa forma você consegue definir a responsabilidade da pontuação de cada letra pra esse enum tornando o código mais legível e claro. O código ficaria assim:
public class teste {
public static void main(String[] args) {
int pontuacao = 0;
String palavra = "teste";
String palavraUpper = palavra.toUpperCase();
for (char letter : palavraUpper.toCharArray()) {
pontuacao += Letters.valueOf(Character.toString(letter)).getLetterScore();
}
System.out.println(pontuacao);
}
}
public enum Letters {
A(1),
B(3),
C(3),
D(2),
E(1),
F(4),
G(2),
H(4),
I(5),
J(8),
K(5),
L(1),
M(3),
N(5),
O(1),
P(3),
Q(10),
R(1),
S(1),
T(1),
U(3),
V(4),
W(4),
X(8),
Y(4),
Z(10);
private final int score;
private Letters(int letterScore) {
this.score = letterScore;
}
int getLetterScore() {
return score;
}
}
Você poderia extrair o calculo da pontução por palavra pra uma outra função tambem.
PS: O valueOf do enum pode subir uma IllegalArgumentException
, recomendo tratar a excessão nesse caso.
PS2: Não sei se coloquei as pontuações corretas em cada uma das letras xD