Hola, bienvenidos a este nuevo video. Vamos ahora a programar los últimos métodos del catálogo, uno de los cuales es el que muestra el histórico de transmisiones. Como es un método de la clase, lo colocamos antes de los métodos que sólo son auxiliares. Recuerda que en el método "daTransmision" iba llenando el histórico. Ahora, se trata de mostrar aquellos discos cuyo histórico tiene algo grabado. Escribimos, primero, el comentario de Javadoc. Este método muestra el histórico de transmisiones que sólo incluye las iniciadas que fueron terminadas en un disco dado. Tiene como parámetro "cual", que corresponde a la posición del disco del que queremos mostrar su registro histórico. Como salida nos regresa una cadena con el histórico en formato bonito. Termina el método. Es un método público, puesto que está en la tarjeta de responsabilidades. Es de objeto, nos regresa una cadena, se llama "mstraHist" y tiene como parámetro un entero "cual". Lo primero que tiene que hacer es averiguar si el índice "cual" es correcto, por lo tanto, preguntamos si "cual" es menor que cero, o bien "cual" es mayor o igual que el número de discos que tenemos registrados, o bien la posición "cual" del catálogo tiene algo. Todas estas son condiciones, si alguna de estas se cumple es que tenemos problemas con la posición, por lo que vamos a regresar aquí, como valor del método, la cadena que dice que este disco no existe. Vamos a empezar con una variable de tipo "cadena" a la que le asignamos como valor inicial lo que nos indique, que es el "Histórico del disco", y luego, le ponemos un tabulador. Le pegamos a esa cadena el nombre del disco. Entonces, tomamos al disco que esté en la posición "cual", que ya vimos que es válido, y le pedimos que nos dé el nombre, le ponemos un cambio de renglón. Después, tienes que averiguar si hay registros en el histórico. Pregunta si el número de histórico en la posición que corresponde a "cual" es igual a "cero", quiere decir que no hay históricos en ese disco. Por lo tanto, le vas a agregar a la cadena que el disco no tiene ningún registro. Le agregas un cambio de línea y sales del método, regresando esa cadena, con esto terminas el "if". Una vez que sabemos que el disco tiene al menos un histórico, lo queremos mostrar. Tenemos este diagrama. El catálogo nos dice cuáles son las transmisiones activas y el histórico nos dice cuántos registros históricos tiene registrados. Por lo tanto, vamos a usar una iteración. Con un "for" vamos a recorrer los registros vivos del arreglo histórico. Usamos la variable "int", empieza valiendo "0", que es la primera posición del arreglo. Mientras la "i" sea menor que lo que se encuentra en "numHist" en la posición correspondiente a "cual". Lo que hará en cada iteración es incrementarse. Vamos a ver qué es lo que le pega a la cadena en el "for". Tomas a la cadena que llevas y le vas a pegar, primero, la posición del registro que estás viendo. En ese momento, le pegas también un tabulador, vas a escribir a qué hora fue iniciada la transmisión. Otra vez, un tabulador, lo que vas a escribirle es el método "daCalndario" y la posición que le vas a dar es: tomas "histórico" en la posición del disco "cual", el renglón "0" y la columna "i". A continuación, terminas la llamada al método. Le pegas un carácter de fin de línea para que lo escriba en un renglón distinto, algo de blancos, luego un tabulador. Después, vas a poner a qué hora se terminó la transmisión, otra vez un blanco, un tabulador. Vuelves a llamar a "daCalndario", pero ahora vas a pasarle lo que se encuentra en el mismo arreglo pero en "1", en la posición "i". Cierras la llamada al método. Le vas a agregar dos cambios de línea. Con esto terminas lo que haces con cada uno de los discos, por lo tanto, cerramos el "for". Nos falta todavía un método que muestra los históricos de todos los discos. Es muy fácil una vez que tenemos el método que muestra cada disco. Hacemos el comentario de Javadoc. Como ya sabemos lo que es un histórico, muestra el histórico de todos los discos que lo tienen. No recibe parámetros puesto que toma los atributos del disco. Regresa una cadena que es con los históricos presentados. Lo que tiene que hacer el método es iterar e ir preguntando, por cada disco, si tiene o no un histórico válido. El método es público, de objeto. Regresa una cadena, se llama "mstraHistrs" y no tiene parámetros. Como va a regresar una cadena, la declaramos y le ponemos como valor inicial el encabezado que diga que se trata del "Histórico en los discos que lo tienen". Hacemos un cambio de línea y le ponemos una cadena de iguales. Verifico que sea del tamaño para que tenga el número de iguales que tiene el título. Le agregamos al final otro cambio de línea, con esto queda inicializada la cadena. Ponemos un "for" para "cual" desde la posición "0". Esta vez, nuestra variable del "for" será "cual", mientras que "cual" sea menor que el "numDiscos" registrados en el disco. La actualización consiste en que pasa al siguiente disco, se autoincrementa. Lo primero que tienes que ver es si el disco en la posición "cual" es distinto a "null". Va a proceder a procesarlo, le agrega "cadena" y la historia de ese disco. Ya sea que conteste que ese disco no tiene historia o que sí la tiene, el método "mstraHist" se encarga de cada uno de los discos y, para evitar problemas, le agregamos un final de línea a cada uno de los discos. Con eso termina el "for" y el "if" sólo tiene un enunciado. A continuación, regresamos la cadena, con esto termina este método. Compilamos y nos marcan caracteres inválidos, entonces, repetimos esa línea. Compilamos y nos marca que, aquí, nos faltó un "más". Volvemos a compilar y todo bien. Nos falta llenar el método "pideNum". Lo primero que hacemos es imprimirle al usuario el mensaje que nos dieron. Ese mensaje le pide un número y le dice que el número tiene que estar entre mínimo y máximo. Después, procede a leer el entero y, si tiene algún problema, si no está entre mínimo y máximo, regresa "menos uno". Vamos a declarar un entero "num", que es donde vamos a guardar el entero que vamos a pedirle al usuario. Le damos un valor inicial de "menos uno", por si hay algún problema después. Lo que haremos después es imprimir el mensaje, pero indicándole al usuario entre paréntesis que tiene que estar el número entre mínimo y máximo. Cerramos el paréntesis y le pedimos que termine con un "Enter". Colocamos dos puntos, con esto termina lo que queremos escribir. Estas informándole al usuario cuáles son los rangos en los que quieres el número. En "num" vas a poner "de la consola que te pasaron vas a leer el siguiente entero". Ahora, nos comemos el "Enter" porque, si no, se va a quedar atorada la consola y no vamos a poder avanzar. Verificamos si el número que nos pasaron es menor que el mínimo, porque una cosa es que le digamos al usuario que nos teclee algo entre ciertos rangos y otra que el usuario lo haga; o bien, el número es mayor que el máximo. Entonces, asignamos a "num" el valor de "menos uno" y, si está en rango, no va a asignarle un nuevo valor y regresamos el valor guardado en "num". Con esto termina el método "pide Num". Compilamos y todo bien. Nos falta el comentario de Javadoc para este método. Pide un número a través de la consola que debe estar entre dos valores especificados. Tiene cuatro parámetros: el primero es "cons", un escáner que permite leer de la consola; el segundo es el mensaje que indica lo que se está pidiendo; el tercero es un entero, que es el valor mínimo que puede tener la variable; y el último parámetro es "máximo", que es el valor máximo que puede tomar la variable. Regresa un entero si es válido o "menos uno" si ese valor dado no es válido. Terminamos el comentario de Javadoc. Vuelvo a compilar y todo bien. Te espero en la siguiente lección para revisar otro tipo de condicionales y más tipos de iteraciones. No te lo puedes perder.