Hola.
El método split() no te va a servir en este caso:
String[] partes = cadena.split(",");
Esto lo que hace es dividir una cadena, siempre que esta contenga la subcadena que especificamos entre comillas.
Es decir, para que te sirviera, habría que introducir el número de teléfono así:
3,2,2,1,2,3,4,5,6,7
Entonces, split(",") sí que podría crear un array con todos los dígitos separados.
De todos modos, no lo necesitas para lo que quieres resolver.
Otro fallo importante a destacar está en el método de comprobarNumeros, pues está declarado como tipo boolean, pero no retorna ningún valor.
public static boolean comprobarNumeros(String num) {
String str = cadena;
boolean isNumeric = true;
for (int i = 0; i < str.length(); i++) {
if (!Character.isDigit(str.charAt(i))) {
isNumeric = false;
}
}
System.out.println(isNumeric);
}
Al final del método lo único que hace es mostrar en pantalla el valor del boolean isNumeric, pero no lo retorna. Así que el compilador de Java no lo va a aceptar, si el método se declara como tipo boolean, ha de retornar un valor boolean obligatoriamente.
Además, eso es lo que realmente necesitas. No sirve de mucho que en pantalla se muestre "true" o "false", lo que necesitas es que ese valor sea retornado para poder tomar decisiones dentro del código.
public static boolean comprobarNumeros(String num) {
String str = cadena;
boolean isNumeric = true;
for (int i = 0; i < str.length(); i++) {
if (!Character.isDigit(str.charAt(i))) {
isNumeric = false;
}
}
return isNumeric;
}
Te dejo este código, bastante parecido en realidad al que estabas proponiendo, pero corrigiendo lo mencionado y cambiando algunos enfoques.
Asegúrate de que entiendes cada línea, si no es así, no dudes en preguntar cualquier cosa.
Un saludo.
public class EvaluaTelefono {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
String cadena ="";
while (!cadena.equals("salir")) {
System.out.println("\n\t Ingresa el numero telefonico con el formato que se indica");
System.out.println("\t 322xxxxxx");
System.out.println("\t Escriba \"salir\" para terminar programa");
System.out.print("\n\t Cadena: ");
cadena = scn.nextLine();
if (!cadena.equals("salir")) {
//Comprobamos si tiene 10 caracteres
if (cadena.length() != 10) {
System.out.println("El número ha de tener 10 cifras");
}
else if (!todoDigitos(cadena)) { //Comprobamos si todo son digitos
System.out.println("El número ha de estar compuesto solo por dígitos");
}
else if (!cadena.startsWith("322")) { //Comprobamos si comienza por 322
System.out.println("El número ha de comenzar por 322");
}
else { //Todas las comprobaciones han sido superadas
System.out.println("El número es correcto");
}
}
}
scn.close();
System.out.println("\n\t\tFIN DE PROGRAMA");
}
public static boolean todoDigitos(String cadena) {
//Recorremos cada caracter de la cadena a ver si son dígitos
for (int i = 0; i < cadena.length(); i++) {
if (!Character.isDigit(cadena.charAt(i)))
return false; //Si encontramos un caracter "no dígito" retornamos false
}
//Si el bucle for termina sin haber retornado false, es que TODOS son dígitos
return true;
}
}