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);
Autor: Juan Pablo Fuentes
Formador de programación y bases de datos
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); } }
Ejercicio Diccionarios
votaciones = [ { "votante": "Juan", "votos": [ {"participante": "Ana", "puntos": 5}, {"participante": "Pedro", "puntos": 3} ] }, { "votante": "Marta", "votos": [ {"participante": "Ana", "puntos": 4}, {"participante": "Luis", "puntos": 2} ] }, { "votante": "Pedro", "votos": [ {"participante": "Ana", "puntos": 3}, {"participante": "Luis", "puntos": 5} ] } ] # crear una función que nos devuelva una lista de participantes ordenada de más votos a menos votos # Crear una función que nos devuelva un diccionario con la clave el nombre del votante y el valor la media de sus votos participantes={} for votacion in votaciones: # print(votacion) # print(votacion["votos"]) for voto in votacion["votos"]: # print(voto) if voto["participante"] in participantes: participantes[voto["participante"]]+=voto["puntos"] else: participantes[voto["participante"]]=voto["puntos"] print(participantes)
Ejemplos funciones predefinidas
# matemáticos print(abs(-5)) # Salida: 5 print(abs(3.14)) # Salida: 3.14 print(max(10, 20, 30)) # Salida: 30 print(max([1, 2, 3, 4])) # Salida: 4 print(min(10, 20, 30)) # Salida: 10 print(min([1, 2, 3, 4])) # Salida: 1 print(sum([1, 2, 3, 4])) # Salida: 10 print(sum([10, 20, 30], 5)) # Salida: 65 print(round(3.14159, 2)) # Salida: 3.14 print(round(2,0)) # Salida: 3 print(round(2.5)) # Salida: 2 print(round(3.5)) # Salida: 4 # información print(len("Python")) # Salida: 6 print(len([1, 2, 3, 4])) # Salida: 4 print(type(5)) # Salida: <class 'int'> print(type("hello")) # Salida: <class 'str'> print(type((1,2,3))) # Salida: <class 'tuple'> # entrada / salida print("Hello, World!") # Salida: Hello, World! print(42) # Salida: 42 nombre = input("¿Cómo te llamas? ") # Entrada del usuario print("Hola, " + nombre) # conversión print(str(123)) # Salida: '123' print(str(3.14)) # Salida: '3.14' print(int('123')) # Salida: 123 print(int(3.99)) # Salida: 3 print(float('3.14')) # Salida: 3.14 print(float(10)) # Salida: 10.0 print(bool(1)) # Salida: True print(bool('')) # Salida: False # conversiones de tipos de datos complejos print(list("hello")) # Salida: ['h', 'e', 'l', 'l', 'o'] print(list((1, 2, 3))) # Salida: [1, 2, 3] print(list( {"color": "rojo", "tamaño": "M", "cantidad": 10})) # Salida: ['color', 'tamaño', 'cantidad'] print(tuple([1, 2, 3])) # Salida: (1, 2, 3) print(tuple("hello")) # Salida: ('h', 'e', 'l', 'l', 'o') print(set([1, 2, 3, 2])) # Salida: {1, 2, 3} print(set("hello")) # Salida: {'h', 'e', 'l', 'o'} # Tengo que poner los valores o una lista de tuplas print(dict(a=1, b=2)) # Salida: {'a': 1, 'b': 2} print(dict([('a', 1), ('b', 2)])) # Salida: {'a': 1, 'b': 2} # Creación de listas print(list(range(5))) # Salida: [0, 1, 2, 3, 4] print(list(range(1, 10, 2))) # Salida: [1, 3, 5, 7, 9] print(list(zip([1, 2, 3], ['a', 'b', 'c']))) # Salida: [(1, 'a'), (2, 'b'), (3, 'c')] print(list(zip('abc', '123'))) # Salida: [('a', '1'), ('b', '2'), ('c', '3')] print(dict(list(zip('abc', '123')))) # Salida: {'a': '1', 'b': '2', 'c': '3'} # ordenar # Ordenar una lista de números en orden ascendente print(sorted([3, 1, 4, 1, 5, 9])) # Salida: [1, 1, 3, 4, 5, 9] # Ordenar una lista de palabras en orden descendente print(sorted(["banana", "apple", "cherry"], reverse=True)) # Salida: ['cherry', 'banana', 'apple'] # Invertir una lista de números numbers = [3, 1, 4, 1, 5, 9] print(list(reversed(numbers))) # Salida: [9, 5, 1, 4, 1, 3] # Invertir una cadena de texto text = "hello" print("".join(reversed(text))) # Salida: 'olleh' # Encontrar el mínimo en una lista de números print(min([3, 1, 4, 1, 5, -9],key=abs)) # Salida: 1 def letrasUnicas(cadena): return len(set(list(cadena))) # Encontrar el máximo en una lista de palabras según la longitud words = ["banana", "apple", "cherry"] print(min(words, key=letrasUnicas)) # Salida: 'banana'
Un ejemplo de cosas anidadas
inventario = { "camiseta": { "variantes": [ {"color": "rojo", "tamaño": "M", "cantidad": 10}, {"color": "azul", "tamaño": "L", "cantidad": 5} ], "precio": 30 }, "pantalones": { "variantes": [ {"color": "negro", "tamaño": "32", "cantidad": 15}, {"color": "azul", "tamaño": "34", "cantidad": 7} ], "precio": 60 } } # stock total de pantalones # llegar a pantalones. Dentro de pantalones, variantes # variantes es una lista, la recorro # dentro de esa lista me interesa la cantidad print(inventario["pantalones"]["variantes"]) suma = 0 for variante in inventario["pantalones"]["variantes"]: print(variante["cantidad"]) suma += variante["cantidad"] print(suma) print(suma*inventario["pantalones"]["precio"]) def vender_producto(inventario, producto, color, tamaño, cantidad_vendida): # comprobar que el producto esté if producto in inventario: # recorro todas las variantes for variante in inventario[producto]["variantes"]: # Si alguna variante coincide con el color y el tamaño if variante["color"] == color and variante["tamaño"] == tamaño: # compruebo que haya suficiente stock if variante["cantidad"] >= cantidad_vendida: # resto la cantidad variante["cantidad"] -= cantidad_vendida return True else: # si no hay suficiente stock devuelvo false return False # si el producto no está en el inventario # o no ha encontrado al recorrer las varianes es color y ese tamaño devuelvo false return False # Ejemplo de uso producto = "camiseta" color = "rojo" tamaño = "M" cantidad_vendida = 3 venta_exitosa = vender_producto(inventario, producto, color, tamaño, cantidad_vendida) print("Venta exitosa:", venta_exitosa) print("Inventario actualizado:", inventario) # Supongamos que quiero hacer una función que me de el stock valorado de un inventario # (cantidad * precio) ¿Como lo hago? def stockValorado(inventario): total=0 # hacer un for sobre inventario que nos devuelve for producto in inventario: valor=inventario[producto] precio=valor["precio"] suma=0 for variante in valor["variantes"]: print(variante["cantidad"]) suma+=variante["cantidad"] print(precio,suma) total+=precio*suma return total print(stockValorado(inventario))
Soluciones ejercicios números
def getSetFromFile(archivo): # leo el archivo archivo = open(archivo, "r") numeros = archivo.read() archivo.close() # lo convierto a lista lista = numeros[:-1].split(",") # convierto cada elemento en número lista = [int(x) for x in lista] return set(lista) num1 = getSetFromFile("numeros1.txt") num2 = getSetFromFile("numeros2.txt") num3 = getSetFromFile("numeros3.txt") print(num1) print(num2) print(num3) # Números en los tres conjuntos (100) print(num1 & num2 & num3) # Números en num1 que no estén en num2 ni en num3 (1..49) print(num1 - num2 - num3) # Números en num2 que no estén en num1 ni en num3 {} no hay ninguno print(num2 - num1 - num3)
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; } }