Está en la página 1de 5

Alejandro Aguilar Herrero 1ºDAM

Programación

Colección de ejercicios resueltos 21

1. Escribe un programa con un método, de nombre clasificadorPalabrasLongitud, que reciba por parámetro el
nombre de un archivo, el cual contendrá un conjunto de palabras, cada una en una línea. El método también
recibirá un valor entero que se utilizará como valor de corte para clasificar las palabras. Se recibirán también los
nombres de los dos archivos donde quedarán almacenadas, respectivamente, las palabras con longitud menor al
valor de corte y el resto de las palabras. El método no capturará ninguna excepción.

(Puedes generar el fichero clasificar.txt con el Ejemplo6 de la Teoría)

Solución:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Ejercicio1


{
public static void main(String[] args)
{
String ruta = "/ficheros/";

try {
clasificadorPalabrasLongitud(new File(ruta + "clasificar.txt"), 6,
new File(ruta + "clasificadasG.txt"),
new File(ruta + "clasificadasP.txt"));
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}

public static void


clasificadorPalabrasLongitud(File lista, int corte, File mayor, File menor)
throws IOException
{
BufferedReader entrada;
entrada = new BufferedReader(new FileReader(lista));
FileWriter mayorG = new FileWriter(mayor);
FileWriter menorG = new FileWriter(menor);
String linea = entrada.readLine();
while (linea!=null) {
if(linea.length()<corte){
System.out.println("menor: "+linea);
menorG.write(linea+"\n");
}else{
System.out.println("mayor: "+linea);
mayorG.write(linea+"\n");
}
linea = entrada.readLine();
}
entrada.close();
mayorG.close();
menorG.close();
}
}
Alejandro Aguilar Herrero 1ºDAM
Programación

2. Escribe un programa con un método, de nombre ordenarArchivoAlfab, que reciba por parámetro el nombre
de un archivo para dejar sus líneas ordenadas alfabéticamente. La ordenación se realizará sin tener en cuenta que
las letras en mayúsculas preceden a las minúsculas en el código Unicode.

(Puedes generar el fichero ordenarAlf.txt con el Ejemplo6 de la Teoría)

Solución:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;

public class Ejercicio2 {

public static void main(String[] args)


{
String ruta = ruta = "/ficheros/";

File fichero = new File(ruta + "ordenarAlf.txt");


try
{
ordenarArchivoAlfab(fichero);
} catch (IOException ex)
{
System.out.println(ex.getMessage());
}
}

public static void ordenarArchivoAlfab(File fichero) throws IOException


{
ArrayList<String> lista = new ArrayList<String>();
BufferedReader entrada;
entrada = new BufferedReader(new FileReader(fichero));
String linea = entrada.readLine();
while (linea!=null) {
lista.add(linea);
linea = entrada.readLine();
}
entrada.close();

//Para ordenar este ArrayList de menor a mayor, vamos a utilizar el


//método sort de la clase Collections
Collections.sort(lista,String.CASE_INSENSITIVE_ORDER);
FileWriter fw = new FileWriter(fichero);

//Mostramos por pantalla y escribimos en fichero


for(int i = 0;i<lista.size();i++){ //
System.out.println(lista.get(i));
fw.write(lista.get(i) + "\n");
}
fw.close();
}

}
Alejandro Aguilar Herrero 1ºDAM
Programación

3. Escribe un programa con un método, de nombre escribirArchivoPrecios, que reciba por parámetro un array
de valores enteros correspondientes a referencias a artículos y un array de valores reales correspondientes a los
precios de los artículos. El método recibirá también el nombre de un archivo sobre le que se escribirá cada
referencia seguida de su precio. El método no capturará ninguna excepción.

Solución:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class Ejercicio3


{

public static void main(String[] args)


{
String ruta = "/ficheros/";

int referencias[] = {1,2,3,4,5,6,7,8};


double precios[] = {200,61,34,480,50,120,245,38};
File f = new File(ruta + "precios.txt");
try
{
escribirArchivoPrecios(referencias, precios, f);
} catch (IOException ex)
{
System.out.println(ex.getMessage());
}
}
public static void escribirArchivoPrecios(int referencias[], double precios[],
File f) throws IOException
{
FileWriter fw = new FileWriter(f);
int tamano = referencias.length;
if(tamano == precios.length)
{
for(int i=0; i<tamano; i++)
{
fw.write(referencias[i]+"-"+precios[i]+"\r\n");
}
}else
{
System.out.println("Error: Tamaños distintos");
}
fw.close();
}
}
Alejandro Aguilar Herrero 1ºDAM
Programación

4. Escribe un programa con un método, de nombre actualizarPrecios, que reciba por parámetro el nombre de un
archivo que almacena un conjunto de parejas de valores correspondientes a una referencia y su precio. El método
actualizará los precios de forma que los superiores a 100€ se decrementen en un 50% y los inferiores se
incrementen en un 50%. El método capturará y tratará todas las excepciones que pueda producirse.

Nota: Es importante tener en cuenta que todos los desplazamientos dentro del fichero se realizan en términos de
bytes. ( 8 bytes ocupan un valor de tipo double).

Solución:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Ejercicio4


{
public static void main(String[] args)
{
String ruta = "/ficheros/";

File f = new File(ruta + "precios.txt");


try
{
actualizarPrecios(f);
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}
public static void actualizarPrecios(File f) throws IOException
{
BufferedReader entrada = new BufferedReader(new FileReader(f));
String cadena = "";
String temp[];
String linea = entrada.readLine();
while(linea!=null)
{
temp = linea.split("-");
cadena += temp[0]+"-";
if(Double.parseDouble(temp[1])>100)
{
cadena += Double.toString(Double.parseDouble(temp[1])/2);
}else
{
cadena += Double.toString(Double.parseDouble(temp[1])*2);
}
cadena += "\n";
linea = entrada.readLine();
}
entrada.close();
FileWriter fw = new FileWriter(f);
fw.write(cadena);
fw.close();
}
}
Alejandro Aguilar Herrero 1ºDAM
Programación

5. Escriba un método, de nombre mostrarArchivoPrecios, que reciba por parámetro el nombre de un archivo
que almacena una serie de referencias y precios de artículos. El método leerá los valores el archivo y los
mostrará por pantalla.

Solución:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Ejercicio5 {

public static void main(String[] args)


{
String ruta = "/ficheros/";

File f = new File(ruta + "precios.txt");


try
{
mostrarArchivoPrecios(f);
} catch (IOException ex)
{
System.out.println(ex.getMessage());
}
}
public static void mostrarArchivoPrecios(File f) throws IOException
{
BufferedReader entrada = new BufferedReader(new FileReader(f));
String temp[];
String linea = entrada.readLine();// lee hasta final de registro \n
while(linea!=null)
{
temp = linea.split("-");//divide en el caracter - temp[0], temp[1]..
System.out.println(temp[0]+" --- "+ temp[1]);
linea = entrada.readLine();
}
entrada.close();
}
}

También podría gustarte