Identificación de errores en métodos de ordenación en Java

Hola buen día podrían ayudarme con este ejercicio es un programa en java donde se tiene que identificar los errores en un método de ordenación para el cual nos dan un casi que es el siguiente:

Caso: Patentes
Las antiguas patentes (de automóviles), por ejemplo PL7812, están
compuestas por un string de dos caracteres, en el ejemplo PL, y por un
número entero de cuatro dígitos, en el ejemplo 7812. Suponga que exista una
clase Patente y otra TablaDePatentes de la siguiente forma:


public class Patente {
private String letras ;
private int numero ;
public Patente () {}
public String obtLetras () { return letras ;
}
public int obtNumero () { return numero ; }
}
public class TablaDePatentes {
private String [] tabla ;
public TablaDePatentes () { tabla = new
String [9999]; }
public
boolean buscar (Patente patente ) {}
otros
métodos
}


La idea es queTablaDePatentes almacena en el atributo tabla todas las patentes
autorizadas a estacionarse en el campus San Joaquín. En particular, si la
patente PL7812 está autorizada, entonces tabla [7812] = ‘‘PL’’, y si la patente
JK2345 está autorizada, entonces tabla [2345] = ‘‘JK’’. Además, si dos o más
patentes autorizadas tienen el mismo número, entonces sus pares de letras
aparecen consecutivamente en el string correspondiente de tabla. Por
ejemplo, si las patentes PL7812 y MB7812 están autorizadas, entonces tabla
[7812] = ‘‘PLMB’’; y si las patentes JK2345, RC2345 y DW2345 están todas
autorizadas, entonces tabla [2345] = ‘‘JKRCDW’’.
Escriba el método
buscar de la clase TablaDePatentes, que busca rápidamente la Patente en el
atributo tabla, y devuelve true (verdadero) si patente está en
tabla, y false (falso) en caso contrario.
Criterios de solución:
Lo primero que tenemos que hacer esdeclarar el método como nos indican en el enunciado. Luego, con los métodos de la clase Patente, obtenemos las letras y los números que la componen. Con el número de la patente obtenemos lo almacenado en el arreglo y luego debemos recorrer este string obteniendo substring de largo 2 e ir comparando cada substring con las letras de la patente a buscar. Si coincide con alguno retornamos true, de lo contrario retornamos false.

Posible solución:


public
boolean buscar (Patente patente ) {
int
num = patente. ObtNumero ();
String
letras = patente . ObtLetras ();
String
validas = tabla [ num ];
if(
validas != null ){
int
largo = validas . Length ();
int que = 1;
while (que < largo ) {
if ( letras . Equals ( validas . Substring (que
- 1, k + 1)))
return true;
que = k + 2;
}
}
return false ;
}

Añade tu respuesta

Haz clic para o