Hola momo
Tu ejercicio es una construcción donde demuestras ímpetu y también conocimiento de los métodos del API de java (copyOf y copyOfRange). Y eso siempre es encomiable.
Además presentas un menú amigable y explicativo. OK
Pero, pero. Siempre hay un pero.
En la asignación de ataques en el array habitaciones ha habido deslices en el elemento 75 y los elementos 93 a 100.
En el main usas 4 arrays de texto, dos originales y dos copias.
Para presentar los valores de los originales, vuelcas los valores en las copias y muestras los valores de las copias.
Todo esto que haces, es lícito. Pero me parece que usas mucha artillería para enemigo pequeño.
Un array de Strings habría sido suficiente, cambiando el valor de sus elementos según conveniencia, una vez doctores y otra ataques.
Además. Creas dos clases Doctor y Ataques, únicamente para guardar un String, el nombre del doctor o del ataque.
A mi me parece un uso de recursos desproporcionado.
En lugar de involucrar a una clase para rellenar un array
Arrays.fill(doctor,1,31,doctores.getDrPerez())
bastaría con una cadena de texto.
Arrays.fill(doctor,1,31,"Dr. Perez")
Espero que el resultado que presentas sea a causa del ímpetu con que te has metido en el ejercicio.
Piensa que aunque todo sea válido mientras se consiga el resultado deseado, en java se presume de crear código sencillo a la vez que eficiente.
Así pues. Como ejercicio, está bien. Pero en próximas entregas espero que hagas gala de la máxima eficiencia con el código estrictamente necesario. Eso también forma parte del aprendizaje.
Saludos y adelante.