Poo 4 Cbasic
Poo 4 Cbasic
Poo 4 Cbasic
Entrada/Salida
Esta obra se encuentra bajo una licencia Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0) de Creative Commons.
Forma simplificada:
String str = "¡Hola!";
Metodos de consulta
int length(): devuelve el número de caracteres de la cadena.
char charAt(int p): devuelve el carácter que se encuentra en la posición p
en la cadena (0 ≤ p < length()).
int indexOf(char/String c2): devuelve la primera posición de c2
(carácter o cadena).
int lastIndexOf(char/String c2): devuelve la última posición de c2
(carácter o cadena).
Si se intenta acceder a una posición no válida el sistema lanza una excepción:
IndexOutOfBoundsException.
Conversiones (estáticas)
String String.valueOf(Tipo v): devuelve un nuevo objeto String con la
representación del valor especificado en v.
int Integer.parseInt(String c1): devuelve el resultado de obtener el valor del
número entero representado en c1.
double Double.parseDouble(String c1): devuelve el resultado de obtener el
valor del número real representado en c1.
Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I.Tema
Informática.
4. ClasesUniversidad
Básicas Predefinidas.
de Málaga Entrada/Salida Programación Orientada a Objetos 18 / 57
La clase java.lang.String
Metodos de comparación
boolean equals(String c2): devuelve true si el objeto actual y c2 son
iguales y false en otro caso.
boolean equalsIgnoreCase(String c2): igual que la anterior, pero sin
tener en cuenta las diferencias por mayúsculas y minúsculas.
int compareTo(String c2): devuelve un entero menor, igual o mayor que
cero cuando el objeto actual es menor, igual o mayor que c2.
int compareToIgnoreCase(String c2): igual que la anterior, pero sin
tener en cuenta las diferencias por mayúsculas y minúsculas.
ATENCIÓN c1 == c2 compara las referencias, es decir, si ambas variables
referencian al mismo objeto.
int hashCode(): devuelve el valor del código hash del objeto actual.
str String
• ▸ p r o g r a m a s
0 1 2 3 4 5 6 7 8
▸ int a = str.length(); // a toma el valor 9
▸ int b = str.indexOf('r'); // b toma el valor 1
▸ int c = str.lastIndexOf('r'); // c toma el valor 4
▸ char d = str.charAt(0); // d toma el valor 'p'
▸ char e = str.charAt(str.length()-1); // e toma el valor 's'
▸ String f = str.substring(3, 6); // f toma el valor "gra"
Diseñe una aplicación que permita almacenar y gestionar personas, donde una
persona contiene el nombre y el teléfono de la misma. Así, la aplicación
permitirá las siguientes operaciones:
Añadir una persona a la estructura de datos, donde los datos de una persona se
especifican según las siguientes alternativas. En caso de que se llene el array, se
deberá duplicar su capacidad.
1 Un objeto Persona.
2 El nombre y el teléfono como dos String.
3 El nombre y el teléfono como un String en el formato "nombre # tfn".
Buscar y mostrar los datos de personas a partir de su nombre, y por prefijo.
Mostrar toda la información almacenada.
Dos personas son iguales si tienen el mismo nombre, independientemente del
caso (mayúsculas o minúsculas) de las letras que lo componen.
Lanzar excepciones cuando surjan situaciones anómalas.
Crear un sistema de selección de personas basado en interfaz
34.1% 34.1%
0.1
2.1% 2.1%
0.1% 13.6% 13.6% 0.1%
0.0
Metodos de instancia:
▸ boolean isPresent(); // devueve true si el objeto contenido existe
▸ T get(); // devuelve el objeto contenido (NoSuchElementException)
▸ T orElse(T alt); // devuelve el objeto contenido o el alternativo
▸ boolean equals(Object o); // compara ambos objetos Optional y contenidos
▸ int hashCode(); // hashCode del contenido o cero si vacío
while (sc1.hasNextLine()) {
String linea = sc1.nextLine();
try (Scanner sc2 = new Scanner(linea)) {
sc2.useDelimiter("\\s*[,:-]\\s*");
String nombre = sc2.next();
int edad = sc2.nextInt();
Persona persona = new Persona(nombre, edad);
System.out.println(persona);
}
}
}
}
}
Apertura: establece una conexión entre una variable (manejador del fichero)
dentro del programa y un determinado fichero dentro del sistema de
almacenamiento. En caso de apertura para entrada, el fichero debe existir. En
caso de apertura para salida, se borrará o creará un nuevo fichero.
Escritura: para poder almacenar información en un fichero, una vez abierto en
modo de escritura, hay que transferir la información organizada de alguna
forma mediante operaciones de escritura.
Lectura: para poder utilizar la información contenida en un fichero, debe estar
abierto en modo de lectura, y hay que utilizar las operaciones de lectura
adecuadas a la organización de la información contenida en dicho fichero.
Cierre: cuando se ha terminado de transferir la información a o desde el
fichero, se debe cerrar la conexión previamente establecida entre la variable
manejador del fichero y el fichero en el sistema de almacenamiento. Esta
operación se ocupa además de mantener la integridad del fichero, escribiendo
previamente la información que se encuentre en algún buffer intermedio en
espera de pasar al fichero.
import java.io.IOException;
import java.io.PrintWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.FileWriter;
public class Ejemplo {
private static final String[] DATOS = { "hola", "como", "estás" };
private static void imprimirDatos(PrintWriter pw) {
for (String pal : DATOS) {
pw.println(pal);
}
}
public static void main(String[] args) {
// Añadir información a un fichero de palabras
try (PrintWriter pw = new PrintWriter(new FileWriter(args[0], true))) {
imprimirDatos(pw);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("ERROR: falta el nombre del fichero");
} catch (IOException e) {
System.out.println("ERROR: no se puede escribir en el fichero");
}
}
}
}
}
}
}
Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I.Tema
Informática.
4. ClasesUniversidad
Básicas Predefinidas.
de Málaga Entrada/Salida Programación Orientada a Objetos 56 / 57
Ejemplo
Diseñe una aplicación que permita almacenar y gestionar personas, donde una
persona contiene el nombre y el teléfono de la misma. Así, la aplicación
permitirá las siguientes operaciones:
Añadir una persona a la estructura de datos, donde los datos de una persona se
especifican según las siguientes alternativas. En caso de que se llene el array, se
deberá duplicar su capacidad.
1 Un objeto Persona.
2 El nombre y el teléfono como dos String.
3 El nombre y el teléfono como un String en el formato "nombre # tfn".
Buscar y mostrar los datos de personas a partir de su nombre, y por prefijo.
Mostrar toda la información almacenada.
Cargar los datos de personas desde un fichero de texto, considerando que los
datos de cada persona se encuentran en una línea de texto, donde el nombre
está separado del teléfono por un símbolo #.
Guardar los datos almacenados en un fichero de texto, en un formato adecuado
según lo especificado por la operación de cargar.
Dos personas son iguales si tienen el mismo nombre, independientemente del
caso (mayúsculas o minúsculas) de las letras que lo componen.
Lanzar excepciones cuando surjan situaciones anómalas.
Crear un sistema de selección de personas basado en interfaz
Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I.Tema
Informática.
4. ClasesUniversidad
Básicas Predefinidas.
de Málaga Entrada/Salida Programación Orientada a Objetos 57 / 57