Sobrecargar los métodos llena matriz por teclado
Aquí te muestro un ejemplo de cómo sobrecargar el método `llenarMatrizPorTeclado` en Java para que pueda aceptar diferentes tipos de datos: ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Ingrese el número de filas de la matriz:"); int filas = scanner.nextInt(); System.out.println("Ingrese el número de columnas de la matriz:"); int columnas = scanner.nextInt(); // Llenar matriz con números enteros int[][] matrizEnteros = llenarMatrizPorTeclado(filas, columnas, scanner, Integer.class); System.out.println("Matriz de enteros:"); imprimirMatriz(matrizEnteros); // Llenar matriz con números reales double[][] matrizReales = llenarMatrizPorTeclado(filas, columnas, scanner, Double.class); System.out.println("Matriz de reales:"); imprimirMatriz(matrizReales); // Llenar matriz con cadenas String[][] matrizCadenas = llenarMatrizPorTeclado(filas, columnas, scanner, String.class); System.out.println("Matriz de cadenas:"); imprimirMatriz(matrizCadenas); scanner.close(); } public static <T> T[][] llenarMatrizPorTeclado(int filas, int columnas, Scanner scanner, Class<T> tipo) { T[][] matriz = (T[][]) new Object[filas][columnas]; for (int i = 0; i < filas; i++) { for (int j = 0; j < columnas; j++) { System.out.println("Ingrese el valor de la posición [" + i + "][" + j + "]:"); matriz[i][j] = leerValor(scanner, tipo); } } return matriz; } public static <T> T leerValor(Scanner scanner, Class<T> tipo) { try { if (tipo.equals(Integer.class)) { return (T) scanner.nextInt(); } else if (tipo.equals(Double.class)) { return (T) scanner.nextDouble(); } else if (tipo.equals(String.class)) { return (T) scanner.next(); } else { throw new UnsupportedOperationException("Tipo de dato no soportado"); } } catch (Exception e) { System.out.println("Error al leer valor: " + e.getMessage()); return null; } } public static <T> void imprimirMatriz(T[][] matriz) { for (T[] fila : matriz) { for (T elemento : fila) { System.out.print(elemento + " "); } System.out.println(); } } } ``` En este ejemplo, el método `llenarMatrizPorTeclado` es sobrecargado para aceptar diferentes tipos de datos (`Integer`, `Double` y `String`). El método `leerValor` es utilizado para leer el valor de la posición actual de la matriz, dependiendo del tipo de dato especificado. El método `imprimirMatriz` es utilizado para imprimir la matriz en la consola.