package com.trifulcas.cadenas; public class EjerciciosCadenas { public static void main(String[] args) { System.out.println(eliminar("que queso es un paquete", "que")); System.out.println(contarChar("hola que tal", 'a')); System.out.println(contarChar2("hola que tal", 'a')); System.out.println(sinEspacios(" hola que tal ")); System.out.println(sinEspaciosMejor(" hola que tal ")); System.out.println(masCorta("hola que tal","bbien")); } /* * Escribir una función que elimine todas las ocurrencias de una subcadena * específica de una cadena dada. * eliminar("que queso es un paquete","que")–>" so es un pate" */ static String eliminar(String cadena, String cadenaAEliminar) { // Simplemente reemplazo la cadena con la cadena vacía return cadena.replace(cadenaAEliminar, ""); } /* * Escribir una función que cuente el número de veces que se repite un carácter * específico en una cadena dada. contarChar("hola que tal",'a')–>2 */ static int contarChar(String cadena, char caracter) { int cont = 0; // Recorro toda la cadena for (int i = 0; i < cadena.length(); i++) { // Si el caracter en esa posición es igual al caracter que me pasan if (cadena.charAt(i) == caracter) { cont++; // Cuento 1 más } } return cont; } static int contarChar2(String cadena, char caracter) { // Elimino el caracter de la cadena y la diferencia entre las longitudes // Es las veces que aparece // mañana (6) mñn (3) 6-3=3 veces aparece 'a' // Ojo porque como Java es tipado tenemos que hacer conversiones de tipo // Strng.valueOf(char) Nos convierte un char en cadena return cadena.length() - cadena.replace(String.valueOf(caracter), "").length(); } /* * Escribir una función que elimine los espacios en blanco al principio y al * final de una cadena dada, y que si hay espacios dobles en el interior los * cambie por un solo espacio. sinEspacios(" hola que tal ")–>"hola que tal" */ static String sinEspacios(String cadena) { // Elimino espacios de inicio y fin cadena = cadena.trim(); // Reemplazo dos espacios por uno cadena = cadena.replace(" ", " "); return cadena; } static String sinEspaciosMejor(String cadena) { cadena = cadena.trim(); // Mientras tenga dos espacios consecutivos while (cadena.indexOf(" ") != -1) { // Los reduzco a uno cadena = cadena.replace(" ", " "); } // Al salir del bucle no puedo tener dos espacios consecutivos, hemos reducido // Cualquier cadena de espacios a uno solo return cadena; } /* * Escribir una función a la que le pasamos dos cadenas y nos devuelva la más corta. */ static String masCorta(String cad1, String cad2) { if (cad1.length()>cad2.length()) { return cad1; } return cad2; } }
Categoría: Java
Ejemplo Palindromo y test
System.out.println(palindromo("Arriba la birra")); System.out.println(palindromo("Arriba mi birra")); System.out.println(palindromo("Isaac no ronca asi")); System.out.println(palindromo("En un lugar de la mancha")); StringBuilder sbuilder = new StringBuilder(); long inicio = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { sbuilder.append("Elefante"); } long fin = System.currentTimeMillis(); System.out.println("Tiempo del StringBuilder: " + (fin - inicio)); String cadena = ""; inicio = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { cadena += "Elefante"; } fin = System.currentTimeMillis(); System.out.println("Tiempo del String: " + (fin - inicio)); } // Esta función nos dice si una cadena es o no un palíndromo // Se lee igual de principio a final que a la inversa // Ejemplo: Arriba la birra static boolean palindromo(String cadena) { // Igual a si misma dada la vuelta // Creo el stringbuilder StringBuilder cadsb = new StringBuilder(cadena.toLowerCase().replace(" ", "")); // Creo otro igual StringBuilder cadsb2 = new StringBuilder(cadsb); // Le doy la vuelta cadsb2.reverse(); // Y los comparo return cadsb.compareTo(cadsb2) == 0; }
Stringbuilder
StringBuilder cad = new StringBuilder("Hola que tal"); System.out.println(cad); // cad="Yo muy bien"; Esto da un yo estoy cad.append(" yo estoy muy bien"); System.out.println(cad); // Comparte métodos con String System.out.println(cad.length()); System.out.println(cad.substring(5)); System.out.println(cad.substring(5,8)); // Pero permite modificar insertando cad.insert(0, "hey!"); System.out.println(cad); // O añadiendo al final cad.append(" yo estoy muy bien"); // O eliminar posiciones System.out.println(cad.delete(2, 5)); // Podemos darle la vuelta a la cadena System.out.println(cad.reverse()); System.out.println(cad.reverse()); // COnvierto un stringbuilder a una cadena String cad2=cad.toString(); String nombre="Juan"; // Convierto una cadena a Stringbuilder StringBuilder nombreSB=new StringBuilder(nombre); System.out.println(nombre); System.out.println(nombreSB); // Puedo añadir String o Stringbuilder nombreSB.append(cad); System.out.println(nombreSB);
Funciones de cadena
String c = "hola"; String d = "hola"; String e = new String("HOLA"); System.out.println(c == d); // NO COMPARA VALORES System.out.println(c == e); // COMPARA EL PUNTERO System.out.println(c.equals(e)); // Compara el valor System.out.println(c.equalsIgnoreCase(e)); // Compara el valor c += " que tal"; System.out.println(c); String alumno1 = "Ana"; String alumno2 = "Pep"; if (alumno1.compareTo(alumno2) > 0) { System.out.println(alumno1 + " es mayor que " + alumno2); } else { System.out.println(alumno2 + " es mayor que " + alumno1); } // Longitud System.out.println(alumno1.length()); // Conversión de mayúsculas System.out.println(alumno1.toLowerCase()); //ana System.out.println(alumno1.toUpperCase()); // ANA c = "En un lugar de la mancha"; // Subcadenas System.out.println(c.substring(5)); // A partir de la posición 5 hasta el final lugar de la mancha System.out.println(c.substring(5, 8)); // De la posición 5 hasta la 8 lu // Inicio y fin System.out.println(c.startsWith("En")); //true System.out.println(c.endsWith("cha"));//true // Acceder a las letras for (int i = 0; i < c.length(); i++) { System.out.println(c.charAt(i)); } // Reemplazar cadenas System.out.println(c.replace("a", "@")); System.out.println(c.replace("la", "LA")); // Buscar cadenas System.out.println(c.indexOf("un")); // 3 System.out.println(c.indexOf("pepe")); // -1 // Buscar todas las apariciones int pos = c.indexOf("a"); while (pos != -1) { System.out.println(pos); pos = c.indexOf("a", pos + 1); } // Saber si hay una subcadena System.out.println(c.contains("un")); // true System.out.println(c.contains("pepe")); //false // Eliminar espacios al principio y al final c=" hola que tal "; System.out.println("|"+c+"|"); System.out.println("|"+c.trim()+"|");
Sobrecarga
public class Sobrecarga { public static void main(String[] args) { System.out.println(suma(2,3)); System.out.println(suma(2.4,3.6)); System.out.println(suma(2,3,4)); System.out.println(.1 + .2); System.out.println(repetir("*",9)); System.out.println(repetir("-",20)); System.out.println(repetir("-")); System.out.println(repetir()); System.out.println(repetir(20)); } static int suma(int a, int b) { return a+b; } static double suma(double a, double b) { return a+b; } static int suma(int a,int b,int c) { return a+b+c; } static String repetir(String cadena, int veces) { String res=""; for(int i=0;i<veces;i++) { res+=cadena; } return res; } static String repetir(String cadena) { return repetir(cadena,10); } static String repetir() { return repetir("*",10); } static String repetir(int veces) { return repetir("*",veces); } }
Ejemplos funciones
package com.trifulcas.funciones; public class EjemploFuncion { public static void main(String[] args) { int a = doble(8); System.out.println(a); saludo("Ana"); /* Esto de aquí da error saludo(89); Saludo tiene un parámetro String, no le puedo pasar un int int a=iva(); iva devuelve un double no lo puedo asignar a un int */ int b=mayor(3,990); System.out.println(b); System.out.println(esPrimo(17)); System.out.println(esPrimo(170)); System.out.println(listaPrimos(50)); } // static que de momento lo ponemos siempre porque sí // int que es el tipo que devuelvo: en este caso devuelvo un entero // doble que es el nombre de la función // Los parámetros que en este caso es 1 y entero // return nos devuelve algo, en este caso el doble del número static int doble(int numero) { return numero * 2; } // Devuelvo un double (con decimales) // No le paso ningún parámetro static double iva() { return .21; } // No devuelvo ningún resultado, uso void static void saludo(String nombre) { System.out.println("hola "+nombre); } static int mayor(int a, int b) { if (a>b) { return a; }else { return b; } } static boolean esPrimo(int numero) { for (int i = 2; i < numero; i++) { if (numero % i == 0) { return false; } } return true; } static String listaPrimos(int numero) { String res=""; for(int i=2;i<numero;i++) { if (esPrimo(i)) { res+=i+" "; } } return res; } }
Más ejemplos for
// Calcula a suma de los 100 primeros números int suma = 0; for (int i = 0; i <= 100; i++) { suma += i; } System.out.println(suma); // Calcula el factorial de un número int numero = 8; int factorial = 1; for (int i = 1; i <= numero; i++) { factorial *= i; } System.out.println(factorial); // Bucle anidado se ejecuta 25 veces (5*5) for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.println(i + "-" + j); } } numero = 17; boolean esPrimo = true; for (int i = 2; i < numero; i++) { if (numero % i == 0) { esPrimo = false; } } if (esPrimo) { System.out.println(numero + " es primo"); } else { System.out.println(numero + " no es primo"); } for (int j = 2; j <= 100; j++) { esPrimo = true; for (int i = 2; i < j; i++) { if (j % i == 0) { esPrimo = false; } } if (esPrimo) { System.out.println(j + " es primo"); } else { System.out.println(j + " no es primo"); } }
Ejemplos for
// For es igual que en JS // for(inicializacion;condicion;modificacion) for (int i = 0; i < 10; i++) { System.out.println(i); } // Puedo ir de dos en dos for (int i = 0; i < 10; i += 2) { System.out.println(i); } // Puedo ir de atrás adelante for (int i = 10; i > 0; i--) { System.out.println(i); } // Puedo incluso multiplicar for (int i = 1; i < 100000; i *= 2) { System.out.println(i); } // Bucle for es un bucle while compactado int cont = 0; // inicialización while (cont < 10) { // condición // cont++; // modificación } int n = 0; for (/* me salto la inicialización */; n < 10; n++) { System.out.println(n); } n = 0; for (/* me salto la inicialización */; n < 10; /* me salto la modificación */) { System.out.println(n); n++; } n = 0; for (/* me salto la inicialización */; /* me salto la condición */; /* me salto la modificación */) { System.out.println(n); n++; if (n >= 10) { break; } } n = 0; for (;;) { System.out.println(n); n++; if (n >= 10) { break; } }
Solución ejercicios
Scanner scanner = new Scanner(System.in); System.out.print("Introduce un número entero: "); int a = scanner.nextInt(); System.out.print("Introduce otro número entero: "); int b = scanner.nextInt(); System.out.println("La suma es " + (a + b)); double c = a + 7.5; a += c; System.out.println(a); System.out.print("Introduce un número entero: "); a = scanner.nextInt(); if (a % 2 == 0) { System.out.println("Par"); } else { System.out.println("Impar"); } System.out.print("Introduce un número entero: "); a = scanner.nextInt(); System.out.print("Introduce otro número entero: "); b = scanner.nextInt(); // KISS keep it simple, stupid int suma = 0; while (a <= b) { suma += a; a++; } System.out.println(suma); suma = 0; do { System.out.print("Introduce un número entero (0 para salir): "); a = scanner.nextInt(); suma += a; } while (a != 0); System.out.format("la suma es %d",suma); scanner.close();
Ejemplos bucle while
public class EjemplosWhile { public static void main(String[] args) { // Sintaxis: while(condicion){...} int cont = 0; // Mientras esa condición sea cierta ejecutamos el código // que tenemos en el bucle while (cont < 10) { cont++; // Importantísimo modificar la condición para evitar bucles infinitos System.out.println(cont); } int a = 1; int b = 1; int fib = a + b; // Mientras el téermino de fibonacci sea menor que 500 while (fib < 500) { System.out.println(fib); a = b; b = fib; fib=a+b; // Modifico la condición del bucle } cont=10; while(cont>0) { System.out.println(cont); cont--; } cont=0; int suma=0; // La suma de los 100 primeros números while(cont<=100) { suma+=cont; cont++; } System.out.println(suma); Scanner scanner = new Scanner(System.in); System.out.print("Introduce un número entero: "); int a = scanner.nextInt(); System.out.print("Introduce otro número entero: "); int b = scanner.nextInt(); if (a>b) { System.out.println("El primero es mayor que el segundo"); }else if (b>a){ System.out.println("El segundo es mayor que el primero"); }else { System.out.println("Son iguales"); } System.out.println("La tabla de multiplicar es:"); int cont=1; while(cont<=10) { System.out.println(a+" x "+cont+" = "+(a*cont)); cont++; } } }