Hola. Presento clase con main, como práctica del método 'fill' de la clase 'Arrays'
Clase RellenarIntervalosArray
package CU00676B;
import libToni.varios.*;
import java.util.Arrays;
/**
* Detalles de la clase.
* @author (Toni)
* @version (0)
*/
public class RellenarIntervalosArray {
public static void main (String [] args) {
int numeroSellos = 0, desde = 0, hasta = 90, reemplazo = 33; // valores indices de relleno y valor de relleno
boolean dentroDelBucle = true;
String respuesta = "",separacion = "-------------------------------------";
EnteroIntervalos numero = new EnteroIntervalos();
Mensaje mensaje = new Mensaje (separacion + "\nVamos a poner pegatinas (sellos numerados) en la pared.");
numeroSellos = numero.enteroAceptado(
mensaje.responde ("Digame. Hasta un máximo de 90 sellos. ¿Cuantos vamos a preparar?",0),1,91);
if (numeroSellos < 1) {
mensaje.muestra ("Valor numérico incorrecto. Se toma el valor por defecto '30'");
numeroSellos = 30;
}
int [] s = new int [numeroSellos]; // declara array de (int) de nombre 's'
for (int i = 0; i < s.length; i++) { // inicializa array s
s[i] = i;
} // fin del for
int [] respaldoSello = Arrays.copyOf(s, s.length); // duplicado del array para recuperar
mensaje.muestra ( separacion + "\n" +
"A continuación el array con valores inicializados listo para ser manipulado.\n" +
separacion );
do {
presentaValores (s);
desde = numero.enteroAceptado(
mensaje.responde (separacion + "\nAhora vamos a cambiar los valores de algunos sellos.\n" +
"Primero, introduzca el primer índice donde efectuar el cambio entre " +
desde + " y " + numeroSellos +":",0), desde, numeroSellos);
if (desde < 0) {
mensaje.muestra ("Valor inválido. Se toma el valor por defecto. '0'");
desde = 0;
}
hasta = numero.enteroAceptado(
mensaje.responde ("Y ahora, introduzca el último índice donde efectuar el cambio entre " +
desde + " y " + numeroSellos + ":",0), desde, numeroSellos+1);
if (hasta < desde) {
mensaje.muestra ("Valor inválido. Se toma el valor por defecto. '" + numeroSellos + "'");
hasta = numeroSellos;
}
reemplazo = numero.enteroAceptado(
mensaje.responde ("Y finalmente.\n" +
"Introduzca el valor que reemplazará los valores del rango seleccionado, entre 0 y 89:",0),0,90);
if (reemplazo < 0) {
mensaje.muestra ("Valor inválido. Se toma el valor por defecto. '33'");
reemplazo = 33;
}
Arrays.fill (s, desde, hasta, reemplazo);
// muestra array [] modificado con 'fill'
mensaje.muestra ("He aquí el array de " + numeroSellos + " elementos. Donde se han cambiado sus valores desde...\n" +
"El elemento " + desde + " (incluido), hasta el " + hasta + " (excluido), con el valor " + reemplazo + ".");
presentaValores (s);
respuesta = mensaje.responde ("Para realizar más cambios con este array pulse:\n" +
"(C/c) = cambios\t(R/r) = recuperar valores iniciales\t(INTRO) = salir",0);
if (respuesta.length() == 0) { // saliendo
dentroDelBucle = false;
} else if (respuesta.substring(0,1).toUpperCase().equals("C")) {
mensaje.muestra ("\nEl array ha quedado así.");
} else if (respuesta.substring(0,1).toUpperCase().equals("R")) {
s = Arrays.copyOf(respaldoSello, respaldoSello.length);
mensaje.muestra ("\nArray recuperado.");
} else {}
// valores desde y hasta reiniciados
desde = 0;
hasta = numeroSellos;
} while (dentroDelBucle);
System.out.println ("Saliendo de la manipulación de sellos numerados.");
} // fin del main
private static void presentaValores (int [] peg) {
String salto ="";
for (int i = 0; i < peg.length; i++) {
if ( ((i+1) % 10 > 0) ) { salto = " "; } else { salto = "\n"; }
System.out.print ("s[" + i + "]=" + peg[i] + salto);
} // fin del for
if ((peg.length) % 10 >0) { System.out.println(); }
char c = ' ';
for (int i = 0; i < peg.length; i++) {
if ( ((i+1) % 10 > 0) ) { salto = ""; } else { salto = "\n"; }
c = (char) (peg[i] + 33);
System.out.print ( c + salto);
}
if ((peg.length) % 10 >0) { System.out.println(); }
int lineasMostradas = peg.length / 10;
if ( peg.length % 10 >0) { lineasMostradas++; }
System.out.println ("Las últimas " + lineasMostradas + " líneas representan los valores del 'array' en formato de 'char'.");
} // fin de presentaValores
} // Fin de la clase RellenarIntervalosArray
Clase Mensaje. Presenta mensajes y devuelve entradas de teclado
package libToni.varios;
import java.util.Scanner;
/**
* Detalles de la clase. El método presenta mensajes por pantalla... y devuelve entradas de teclado
* @author (Toni)
* @version (0)
*/
public class Mensaje { // Atributos de la clase Mensaje
private String texto;
private int valor;
/**
* Mostrará el texto con salto de línea final.
*/
public Mensaje (String frase) { //Constructor 1 parámetro para objetos de la clase Mensaje. Inicializa atributos
texto = frase;
valor = 1;
muestra (texto, valor);
}
/**
* Muestra el texto con salto de línea o no según param.
* Valores param:
* 0 = Sin salto de línea.
* 1, u otro valor = Con salto de línea.
*/
public Mensaje (String frase, int param) {
texto = frase;
valor = param;
muestra (texto, valor);
}
// Siguen los setters para los atributos de la clase Mensaje
public void setTexto (String texto) { this.texto = texto; }
public void setValor (int valor) { this.valor = valor; }
// Ahora los getters para los atributos de la clase Mensaje
public String getTexto () { return texto; }
public int getValor () { return valor; }
// Y seguidamente, procedimientos y funciones varios.
/**
* Mostrar el texto con salto de línea (sin segundo parámetro)
*/
public void muestra (String frase) {
muestra (frase, 1);
}// fin de muestra 1 parámetro
/**
* Valores param:
* 0 = Sin salto de línea.
* 1, u otro valor = Con salto de línea.
*/
public void muestra (String frase, int param) {
texto = frase;
valor = param;
if (valor == 0) { System.out.print (texto + " ");
} else { System.out.println (texto); }
}// fin de muestra 2 parámetros
/**
* Sin segundo parámetro el mensaje incluirá salto de línea. Devuelve entrada de teclado
*/
public String responde (String frase) {
return responde (frase, 1);
}// fin de responde 1 parámetro
/**
* Valores param:
* 0 = Sin salto de línea + entrada por teclado.
* 1, u otro valor = Con salto de línea + entrada por teclado.
*/
public String responde (String frase, int param) {
texto = frase;
valor = param;
muestra (texto, valor);
Scanner entradaEscaner = new Scanner(System.in);
return entradaEscaner.nextLine();
}// fin de responde 2 parámetros
} // Fin de la clase Mensaje
Clase EnteroIntervalos. Devuelve entero entre intervalos determinados.
package libToni.varios;
/**
* Detalles de la clase.
* @author (Toni)
* @version (0)
*/
public class EnteroIntervalos {
public int enteroAceptado (String entrada, int desde, int hasta) {
int entero = 0;
char c =' ';
entrada = entrada.trim();
if (entrada.length() == 0) { return desde - 1; }
for (int i = 0; i < entrada.length(); i++) {
c = entrada.charAt(i);
if (c==48 || c==49 || c==50 || c==51 || c==52 || c==53 || c==54 || c==55 || c==56 || c==57) { // solo dígitos del 0 al 9
} else { return desde - 1; } // ha aparecido un caracter no dígito
}
entero = (int)Integer.valueOf(entrada);
if (entero < desde || entero >= hasta) { return desde - 1; } // entero fuera del rango desde-hasta
return entero;
} // fin de enteroAceptado
} // Fin de la clase EnteroIntervalos