Y por qué no usaste el StringTokenizer? Te habría hecho la vida mucho más feliz.
La versión de TolaWare funciona, aquí tienes otro algoritmo:
Código:
import java.util.StringTokenizer;
import java.util.regex.Pattern;
public class Clave {
public static boolean validarClave(String clave) {
if (!((Pattern.compile("[0-9]{3}-[0-9]{3}-[0-9]{3}")).matcher(clave))
.matches())
return false;
StringTokenizer tokens = new StringTokenizer(clave, "-");
String trio = tokens.nextToken();
for (int i = 0; i < 3; i++)
if (Integer.parseInt(new Character(trio.charAt(i)).toString()) < 5)
return false;
trio = tokens.nextToken();
for (int i = 0; i < 3; i++)
if (Integer.parseInt(new Character(trio.charAt(i)).toString()) >= 5)
return false;
trio = tokens.nextToken();
char primervalor = trio.charAt(0);
for (int i = 1; i < 3; i++)
if (trio.charAt(i) != primervalor)
return false;
return true;
}
public static void main(String[] args) {
System.out.println(Clave.validarClave("585-123-777"));
}
// esto retorna true si está bien escrita, según tus requerimientos,
// y false si está mal escrita.
}