1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
/* Ejercicio: 2x2x07 Fecha: 28/09/2012 Enunciado: Escribir un método que reciba por parámetro el nombre de un archivo que almacena una serie de referencias y precios de artículos y actualice los precios de forma que los superiores a 100 euros se decrementen en un 50% y los inferiores se incrementen en un 50%. El método capturará y tratará todas las excepciones que puedan producirse. (Con RandomAccessFile) */ import java.io.EOFException; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; public class _2x2x07 { public static void metodo(String[] args) { RandomAccessFile raf = null; boolean finFichero = false; double eur; try { raf = new RandomAccessFile(new File(args[0]), "rw"); do { try { raf.seek(raf.getFilePointer() + Integer.SIZE / 8 + Byte.SIZE / 8); eur = raf.readDouble(); if( eur > 100 ) eur *= 1.5; else eur /= 1.5; raf.seek(raf.getFilePointer() - Double.SIZE / 8); raf.writeDouble(eur); raf.seek(raf.getFilePointer() + Byte.SIZE / 8); } catch( EOFException e ) { finFichero = true; raf.close(); } } while( !finFichero ); } catch( FileNotFoundException e ) { System.out.println("El archivo no existe"); } catch( IOException e ) { System.out.println("Se produjo un error con el archivo"); } } public static void main(String[] args) { String[] argumentos = { "tienda.txt" }; metodo(argumentos); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
/* Ejercicio: 2x1x02 Fecha: 20/09/2012 Enunciado: Escribe un programa que reciba el nombre de un archivo que almacena una serie de cantidades enteras positivas e imprima su suma. */ import java.io.FileReader; import java.io.IOException; import java.util.Scanner; public class _2x1x02 { public static void main(String[] args) { System.out.println("Introduzca el nombre del fichero a guardar numeros:"); Scanner scan = new Scanner(System.in); try { FileReader fr = new FileReader(scan.nextLine()); int num = 0; int temp = fr.read(); while( temp != -1 ) { num += temp; temp = fr.read(); } fr.close(); System.out.println("Los numeros suman: " + String.valueOf(num)); } catch( IOException e ) { e.printStackTrace(); } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
/* Ejercicio: 2x1x03 Fecha: 20/09/2012 Enunciado: Escribir un método que reciba un array de cadenas de caracteres y vuelque su contenido a un archivo cuyo nombre también se recibirá por parámetro. Las cadenas quedarán separadas en el archivo por un asterisco. */ import java.io.FileWriter; import java.io.IOException; public class _2x1x03 { public static void writeCharArrayInFile(String[] array, String file) { try { FileWriter fw = new FileWriter(file); for( int i = 0 ; i < array.length ; i++ ) { fw.write(array[i]); if( i + 1 != array.length ) fw.write("*"); } fw.close(); } catch( IOException e ) { e.printStackTrace(); } } public static void main(String[] args) { String[] array = { "Hola", "que", "tal" }; writeCharArrayInFile(array, "fichero.txt"); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
/* Ejercicio: 2x1x04 Fecha: 20/09/2012 Enunciado: Escribir un método que reciba por parámetro el nombre de un archivo e imprima las cadenas que dicho archivo almacena (una cadena por línea). Se tendrá en cuenta que las distintas cadenas se separan en el archivo por un asterisco (que no se imprimirá). */ import java.io.FileReader; public class _2x1x04 { public static void printFileString(String file) { try { FileReader fr = new FileReader(file); int caracter = fr.read(); while( caracter != -1 ) { if( caracter == '*' ) caracter = '\n'; System.out.print((char)caracter); caracter = fr.read(); } fr.close(); } catch( Exception e ) { e.printStackTrace(); } } public static void main(String[] args) { printFileString("fichero.txt"); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
/* Ejercicio: 2x1x05 Fecha: 20/09/2012 Enunciado: Escribir un método que reciba por parámetro el número correspondiente a un mes del año y la letra correspondiente al día de la semana en que cae el día 1 de ese mes ('L' para Lunes, 'M' para Martes, 'X' para Miércoles...) El método escribirá en un archivo un calendario para ese mes que estará formado por todos los días del mes seguidos de la letra correspondiente al día de la semana en que caen. El método comprobará que los parámetros recibidos son correctos y obtendrá el nombre concatenando a la palabra "mes" el número de mes recibido más la extensión ".txt". Ejemplo: Si el método recibe el valor 3 (Marzo) y la letra ‘M’ indicando que el 1 de Marzo es Martes, obtendrá el nombre de archivo “mes3.txt” y lo escribirá con un calendario que tendrá un aspecto como éste: 1M2X3J5V6S7D8L…31J Prueba del ejercicio 5 anterior: Realizar un método que reciba por parámetro el número correspondiente a un mes del año e imprima por pantalla sus valores. */ import java.io.FileReader; import java.io.FileWriter; public class _2x1x05 { public static int numDiasDelMes(int mes) { int anio = 2012; int numDias = 0; switch( mes ) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: numDias = 31; break; case 4: case 6: case 9: case 11: numDias = 30; break; case 2: if( ( anio % 4 == 0 ) && ( anio % 100 != 0 ) || ( anio % 400 == 0 ) ) numDias = 29; else numDias = 28; break; } return numDias; } public static void calendario(int mes, char diaSemanaDelDiaUno) { String dias = "LMXJVSD"; int numDiasMes = numDiasDelMes(mes); int pos = dias.indexOf(Character.toUpperCase(diaSemanaDelDiaUno)); if( pos != -1 ) { try { FileWriter fw = new FileWriter("mes" + mes + ".txt"); fw.write("L M X J V S D\r\n"); for( int i = 0 ; i < pos * 4 ; i++ ) fw.write(" "); for( int i = 1 ; i <= numDiasMes ; i++ ) { if( i < 10 ) fw.write(i + " "); else fw.write(i + " "); pos++; if( pos > 6 ) { fw.write("\r\n"); pos = 0; } } fw.close(); } catch( Exception e ) { e.printStackTrace(); } } } public static void readCalendar(int mes) { try { FileReader fr = new FileReader("mes" + mes + ".txt"); int i = fr.read(); while( i != -1 ) { System.out.print((char)i); i = fr.read(); } fr.close(); } catch( Exception e ) { e.printStackTrace(); } } public static void main(String[] args) { calendario(9, 's'); readCalendar(9); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
/* Ejercicio: 2x1x06 Fecha: 20/09/2012 Enunciado: Escribir un método que reciba por parámetro un array de cadenas de caracteres y el nombre de un archivo. El método volcará el contenido del array de cadenas en el archivo especificado. Utilizar filtros. Prueba del ejercicio 6 anterior: Realizar un método que reciba por parámetro el nombre de un archivo de texto y muestre su contenido por pantalla. */ import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; public class _2x1x06 { public static void metodoUno(String[] cadenas, String file) { try { FileWriter fw = new FileWriter(file); BufferedWriter bfw = new BufferedWriter(fw); for( int i = 0 ; i < cadenas.length ; i++ ) bfw.write(cadenas[i] + "\r\n"); bfw.close(); fw.close(); } catch( Exception e ) { e.printStackTrace(); } } public static void metodoDos(String file) { try { FileReader fr = new FileReader(file); BufferedReader bfr = new BufferedReader(fr); String linea = bfr.readLine(); while( linea != null ) { System.out.println(linea); linea = bfr.readLine(); } bfr.close(); fr.close(); } catch( Exception e ) { e.printStackTrace(); } } public static void main(String[] args) { String[] cadenas = { "hola", "que", "tal" }; metodoUno(cadenas, "fichero.txt"); metodoDos("fichero.txt"); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
/* Ejercicio: 2x1x07 Fecha: 20/09/2012 Enunciado: Escribir un método que reciba por parámetro un nombre de archivo para dejar sus líneas ordenadas alfabéticamente (no distinguir minúsculas de mayúsculas a la hora de ordenar). */ import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.util.Vector; public class _2x1x07 { public static void metodo(String file) { try { // Se leen todas las lineas del fichero: FileReader fr = new FileReader(file); BufferedReader bfr = new BufferedReader(fr); Vector< String > lineas = new Vector< String >(); String temp = bfr.readLine(); while( temp != null ) { lineas.add(temp); temp = bfr.readLine(); } bfr.close(); fr.close(); // Se ordenan las lineas: for( int i = 0 ; i < lineas.size() ; i++ ) for( int x = 0 ; x < lineas.size() ; x++ ) if( Character.toLowerCase(lineas.get(x).charAt(0)) > Character.toLowerCase(lineas.get(i).charAt(0)) ) { temp = lineas.get(x); lineas.set(x, lineas.get(i)); lineas.set(i, temp); } // Se guardan todas las lineas en el fichero: FileWriter fw = new FileWriter(file); BufferedWriter bfw = new BufferedWriter(fw); for( int i = 0 ; i < lineas.size() ; i++ ) bfw.write(lineas.get(i) + "\r\n"); bfw.close(); fw.close(); } catch( Exception e ) { e.printStackTrace(); } } public static void main(String[] args) { metodo("fichero.txt"); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
/* Ejercicio: 2x1x08 Fecha: 20/09/2012 Enunciado: Escribir un método que solicite al usuario un valor entero. El método no dejará de solicitarlo hasta que el usuario introduzca un valor entero correcto, en ese caso el método devolverá dicho valor. */ import java.util.Scanner; public class _2x1x08 { public static boolean validar(String cadena) { boolean res = true; for( int i = 0 ; i < cadena.length() && res ; i++ ) if( cadena.charAt(i) < '0' || cadena.charAt(i) > '9' ) res = false; return res; } public static int metodo() { String cadena = "0"; System.out.println("Introduzca un numero entero valido:"); try { Scanner scan = new Scanner(System.in); do { cadena = scan.nextLine(); } while( !validar(cadena) ); scan.close(); } catch( Exception e ) { e.printStackTrace(); } return Integer.parseInt(cadena); } public static void main(String[] args) { System.out.println("echo " + metodo()); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
/* Ejercicio: 2x1x09 Fecha: 21/09/2012 Enunciado: Escribir un método que solicite al usuario una respuesta a una pregunta cuyo contenido se recibirá por parámetro. El método continuará formulando la pregunta hasta que la respuesta consista en uno de los siguientes caracteres: 's', 'S', 'n', 'N'. En caso de responder afirmativamente ('s' o 'S') el método devolverá el valor true, y false en caso contrario. */ import java.util.Scanner; public class _2x1x09 { public static boolean metodo(String pregunta) { boolean res = true; String temp; System.out.print(pregunta); System.out.println(" (Responda: s, S, n, N)."); try { Scanner scan = new Scanner(System.in); do { temp = scan.nextLine().toLowerCase(); } while( !temp.equals("s") && !temp.equals("n") ); if( temp.equals("n") ) res = false; scan.close(); } catch( Exception e ) { e.printStackTrace(); } return res; } public static void main(String[] args) { metodo("Es el coche de Batman es amarillo?"); } } |