Advertisement
CrazyDave23

Tarea 3 - Lectura de Ficheros

Jun 5th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 17.51 KB | None | 0 0
  1. package definitivo;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.*;
  5.  
  6. /*Los datos en el archivo de texto deben estar separados por " ; "
  7. Por ejemplo:
  8.         Provincia;Nombreciudad;Distancia a Chillan;Distancia a concepcion;Ahorro
  9.  
  10.         Diguillin;Chillán;0;98;98
  11. */
  12.  
  13. public class Tarea3 {
  14.    
  15.         //Desarrollo
  16.             //Llamamos a todas las variables ue ocuparemos.
  17.         public static float[] promedio_chillan(float promch1, float promch2, float promch3, float promch4,
  18.                                               float sumch1, float sumch2, float sumch3, float sumch4, Clase[] diguillin, int casilla,
  19.                                               Clase[] itata, int casilla2, Clase[] punilla, int casilla3, Clase[] conce, int casilla4){
  20.            
  21.                 //Armamos un ciclo while para que solo se realice dentro del límite del arreglo.
  22.             while (casilla < diguillin.length){
  23.                 //Romper ciclo cuando se haga nulo.
  24.             if (diguillin[casilla] == null) {
  25.                 break;
  26.             }  
  27.                 //Calcular promedio de Provincia de Diguillín a Chillán.
  28.             sumch1 = sumch1 + diguillin[casilla].getDistancia_chillan();
  29.             promch1 = (sumch1/10);
  30.             casilla++;
  31.             }
  32.             while (casilla2 < itata.length){
  33.            
  34.             if (itata[casilla2] == null) {
  35.                 break;
  36.             }
  37.                 //Calcular promedio de Provincia de Itata a Chillán.
  38.             sumch2 = sumch2 + itata[casilla2].getDistancia_chillan();
  39.             promch2 = (sumch2/8);
  40.             casilla2++;
  41.             }
  42.             while (casilla3 < punilla.length){
  43.            
  44.             if (punilla[casilla3] == null) {
  45.                 break;
  46.             }
  47.                 //Calcular promedio de Provincia de Punilla a Chillán.
  48.             sumch3 = sumch3 + punilla[casilla3].getDistancia_chillan();
  49.             promch3 = (sumch3/4);
  50.             casilla3++;
  51.             }
  52.             while (casilla4 < conce.length){
  53.            
  54.             if (conce[casilla4] == null) {
  55.                 break;
  56.             }
  57.                 //Calcular promedio de Provincia de Concepción a Chillán.
  58.             sumch4 = sumch4 + conce[casilla4].getDistancia_chillan();
  59.             promch4 = (sumch4/2);
  60.             casilla4++;
  61.             }
  62.                 //Guardar los promedios de las 4 provincias en un arreglo de tipo float.
  63.             return new float [] {promch1, promch2, promch3, promch4};
  64.            
  65.         }
  66.            
  67.             //Llamamos a todas las funciones que ocuparemos en este método.
  68.         public static float[] promedio_conce(float sumcon1, float sumcon2, float sumcon3, float sumcon4, float promcon1, float promcon2,
  69.                                              float promcon3, float promcon4, Clase[] diguillin, int casilla, Clase [] itata, int casilla2,
  70.                                              Clase[] punilla, int casilla3, Clase[] conce, int casilla4){
  71.                 //Ciclo while para que recorra el largo del arreglo.
  72.             while (casilla < diguillin.length){
  73.                 //Cuando sea nulo, romper.
  74.             if (diguillin[casilla] == null) {
  75.                 break;
  76.             }
  77.                 //Calcular promedio de Provincia de Diguillin a Concepción.
  78.             sumcon1 = sumcon1 + diguillin[casilla].getDistancia_conce();
  79.             promcon1 = (sumcon1/10);
  80.             casilla++;
  81.             }
  82.             while (casilla2 < itata.length){
  83.            
  84.             if (itata[casilla2] == null) {
  85.                 break;
  86.             }
  87.                 //Calcular promedio de Provincia de Itata a Concepción.
  88.             sumcon2 = sumcon2 + itata[casilla2].getDistancia_conce();
  89.             promcon2 = (sumcon2/8);
  90.             casilla2++;
  91.             }
  92.             while (casilla3 < punilla.length){
  93.            
  94.             if (punilla[casilla3] == null) {
  95.                 break;
  96.             }
  97.                 //Calcular promedio de Provincia de Punilla a Concepción.
  98.             sumcon3 = sumcon3 + punilla[casilla3].getDistancia_conce();
  99.             promcon3 = (sumcon3/4);
  100.             casilla3++;
  101.             }
  102.             while (casilla4 < conce.length){
  103.            
  104.             if (conce[casilla4] == null) {
  105.                 break;
  106.             }
  107.                 //Calcular promedio de Provincia de Concepción a Concepción.
  108.             sumcon4 = sumcon4 + conce[casilla4].getDistancia_conce();
  109.             promcon4 = (sumcon4/2);
  110.             casilla4++;
  111.             }
  112.                 //Almacenar los promedios en un arreglo.
  113.             return new float [] {promcon1, promcon2, promcon3, promcon4};
  114.         }
  115.        
  116.              //Llamamos a todas las variables que ocuparemos en la función                                
  117.         public static float[] promedio_ahorro(float ahorro1, float ahorro2, float ahorro3, float ahorro4,
  118.                                               float proma1, float proma2, float proma3, float proma4, Clase[] diguillin,
  119.                                               int casilla, Clase[] itata, int casilla2, Clase[] punilla, int casilla3,
  120.                                               Clase[] conce, int casilla4){
  121.            
  122.                 //Armamos ciclo while para recorrer todas las casillas del arreglo.                              
  123.             while (casilla < diguillin.length){
  124.                 //En caso de que sea nulo, romper.
  125.             if (diguillin[casilla] == null) {
  126.                 break;
  127.             }
  128.                 //Calcular el promedio de ahorro de la provincia de Diguillín.
  129.             ahorro1 = ahorro1 + diguillin[casilla].getAhorro();
  130.             proma1 = (ahorro1/10);
  131.             casilla++;
  132.             }
  133.             while (casilla2 < itata.length){
  134.            
  135.             if (itata[casilla2] == null) {
  136.                 break;
  137.             }
  138.                 //Calcular el promedio de ahorro de la provicia de Itata.
  139.             ahorro2 = ahorro2 + itata[casilla2].getAhorro();
  140.             proma2 = (ahorro2/8);
  141.             casilla2++;
  142.             }
  143.             while (casilla3 < punilla.length){
  144.            
  145.             if (punilla[casilla3] == null) {
  146.                 break;
  147.             }
  148.                 //Calcular el promedio de ahorro de la provincia de Punilla.
  149.             ahorro3 = ahorro3 + punilla[casilla3].getAhorro();
  150.             proma3 = (ahorro3/4);
  151.             casilla3++;
  152.             }
  153.             while (casilla4 < conce.length){
  154.            
  155.             if (conce[casilla4] == null) {
  156.                 break;
  157.             }
  158.                 //Calcular el promedio de ahorro de la provincia de Concepción.
  159.             ahorro4 = ahorro4 + conce[casilla4].getAhorro();
  160.             proma4 = (ahorro4/2);
  161.             casilla4++;
  162.             }    
  163.                 //Almacenar los datos en un arreglo.
  164.             return new float [] {proma1, proma2, proma3, proma4};
  165.         }
  166.  
  167.     public static void main(String[] args) {
  168.        
  169.         //Entrada
  170.             //Iniciamos un File reader.
  171.         FileReader lectorarchivo;
  172.             //El FileReader busca el archivo y lo lee.
  173.             //Encerramos el mismo FileReader en un Try - Catch para evitar Excepciones
  174.         try{
  175.           lectorarchivo = new FileReader("C:\\Users\\david\\Desktop\\datos_nuble_2017.txt");
  176.             //Atrapamos la Excepción y en caso de que se de esta misma imprimir mensaje.
  177.         }catch(FileNotFoundException e){
  178.             System.out.println("Archivo no encontrado:" + e.getMessage());
  179.             //Cerramos con un return, para así terminar el programa y no seguir.
  180.             return;
  181.         }
  182.             //Iniciamos un BufferedReader, que leerá línea por línea.
  183.         BufferedReader textoarchivo;
  184.         textoarchivo = new BufferedReader(lectorarchivo);
  185.             //Iniciamos una variable auxiliar, llamada casilla, que define en qué casilla del arreglo comenzaremos.
  186.         int casilla = 0;
  187.             //Iniciamos otra variable auxiliar, que guardará las lineas de texto.
  188.         String lineatexto;
  189.        
  190.        
  191.             //Definimos un arreglo para la Provincia de Diguillín.
  192.         Clase[] diguillin;
  193.                 //10 espacios, puesto que solo ocupamos 10 ciudades de esta provincia.
  194.         diguillin = new Clase[10];
  195.                 //Armamos un ciclo while que se repita hasta que se recorran todas las caillas.
  196.         while (casilla < diguillin.length){
  197.             try{
  198.                 lineatexto = textoarchivo.readLine();
  199.             }catch(IOException e){
  200.                 System.out.println(e.getMessage());
  201.                 return;
  202.             }
  203.                 //Cuando ya no quede nada más que leer, se detiene.
  204.             if (lineatexto == null) {
  205.                 break;
  206.             }
  207.                 //Definimos otra variable, la cual funcionará como separador para distinguir valores del .txt
  208.             String [] separador;
  209.             separador = lineatexto.split(";");
  210.                 //Las variables diferenciadas por el separador quedan como String, así que nos encargamos de pasar a float los números.
  211.             float distancia_chillan;
  212.             distancia_chillan = Float.parseFloat(separador[2]);
  213.             float distancia_conce;
  214.             distancia_conce = Float.parseFloat(separador[3]);
  215.             float ahorro;
  216.             ahorro = Float.parseFloat(separador[4]);
  217.                 //Cada casilla tendrá los siguientes datos, separados por el separador ';'.
  218.             diguillin[casilla] = new Clase();
  219.             diguillin[casilla].setProvincia(separador[0]);
  220.             diguillin[casilla].setNombre(separador[1]);
  221.             diguillin[casilla].setDistancia_chillan(distancia_chillan);
  222.             diguillin[casilla].setDistancia_conce(distancia_conce);
  223.             diguillin[casilla].setAhorro(ahorro);
  224.                 //Debemos ir aumentando casilla o se estancará.
  225.             casilla++;
  226.         }
  227.        
  228.             //Repetimos el procedimiento del arreglo para la provincia de Diguillín, solo que ahora para Itata.
  229.         Clase[] itata;
  230.         itata = new Clase[8];
  231.         int casilla2 = 0;
  232.         while (casilla2 < itata.length){
  233.             try{
  234.                 lineatexto = textoarchivo.readLine();
  235.             }catch(IOException e){
  236.                 System.out.println(e.getMessage());
  237.                 return;
  238.             }
  239.            
  240.             if (lineatexto == null) {
  241.                 break;
  242.             }
  243.             String [] separador;
  244.             separador = lineatexto.split(";");
  245.            
  246.             float distancia_chillan;
  247.             distancia_chillan = Float.parseFloat(separador[2]);
  248.             float distancia_conce;
  249.             distancia_conce = Float.parseFloat(separador[3]);
  250.             float ahorro;
  251.             ahorro = Float.parseFloat(separador[4]);
  252.            
  253.             itata[casilla2] = new Clase();
  254.             itata[casilla2].setProvincia(separador[0]);
  255.             itata[casilla2].setNombre(separador[1]);
  256.             itata[casilla2].setDistancia_chillan(distancia_chillan);
  257.             itata[casilla2].setDistancia_conce(distancia_conce);
  258.             itata[casilla2].setAhorro(ahorro);
  259.            
  260.             casilla2++;
  261.         }
  262.                
  263.             //Repetimos el procedimiento para la Provincia de Punilla.
  264.         Clase [] punilla;
  265.         punilla = new Clase[4];
  266.         int casilla3 = 0;
  267.         while (casilla3 < punilla.length){
  268.             try{
  269.                 lineatexto = textoarchivo.readLine();
  270.             }catch(IOException e){
  271.                 System.out.println(e.getMessage());
  272.                 return;
  273.             }
  274.            
  275.             if (lineatexto == null) {
  276.                 break;
  277.             }
  278.             String [] separador;
  279.             separador = lineatexto.split(";");
  280.            
  281.             float distancia_chillan;
  282.             distancia_chillan = Float.parseFloat(separador[2]);
  283.             float distancia_conce;
  284.             distancia_conce = Float.parseFloat(separador[3]);
  285.             float ahorro;
  286.             ahorro = Float.parseFloat(separador[4]);
  287.            
  288.             punilla[casilla3] = new Clase();
  289.             punilla[casilla3].setProvincia(separador[0]);
  290.             punilla[casilla3].setNombre(separador[1]);
  291.             punilla[casilla3].setDistancia_chillan(distancia_chillan);
  292.             punilla[casilla3].setDistancia_conce(distancia_conce);
  293.             punilla[casilla3].setAhorro(ahorro);
  294.            
  295.             casilla3++;
  296.         }
  297.        
  298.             //Repetimos el procedimiento para la Provincia de Concepción.
  299.         Clase [] conce;
  300.         conce = new Clase[2];
  301.         int casilla4 = 0;
  302.         while (casilla4 < conce.length){
  303.             try{
  304.                 lineatexto = textoarchivo.readLine();
  305.             }catch(IOException e){
  306.                 System.out.println(e.getMessage());
  307.                 return;
  308.             }
  309.             if (lineatexto == null) {
  310.                 break;
  311.             }
  312.             String [] separador;
  313.             separador = lineatexto.split(";");
  314.  
  315.             float distancia_chillan;
  316.             distancia_chillan = Float.parseFloat(separador[2]);
  317.             float distancia_conce;
  318.             distancia_conce = Float.parseFloat(separador[3]);
  319.             float ahorro;
  320.             ahorro = Float.parseFloat(separador[4]);
  321.            
  322.             conce[casilla4] = new Clase();
  323.             conce[casilla4].setProvincia(separador[0]);
  324.             conce[casilla4].setNombre(separador[1]);
  325.             conce[casilla4].setDistancia_chillan(distancia_chillan);
  326.             conce[casilla4].setDistancia_conce(distancia_conce);
  327.             conce[casilla4].setAhorro(ahorro);
  328.            
  329.             casilla4++;
  330.         }
  331.        
  332.         // Salida
  333.             //Llamamos a las variables y las dejamos como 0.
  334.         FileWriter fr = null;
  335.         PrintWriter pw = null;
  336.         try {
  337.             fr = new FileWriter("C:\\Users\\david\\Desktop\\resultados_nuble_2017.txt");
  338.             pw = new PrintWriter(fr);
  339.        
  340.         casilla = 0;
  341.         casilla2 = 0;
  342.         casilla3 = 0;
  343.         casilla4 = 0;
  344.         float sumch1 = 0, sumch2 = 0, sumch3 = 0, sumch4 = 0;
  345.         float sumcon1 = 0, sumcon2 = 0, sumcon3 = 0, sumcon4 = 0;
  346.         float promch1 = 0, promch2 = 0, promch3 = 0, promch4 = 0;
  347.         float promcon1 = 0, promcon2 = 0, promcon3 = 0, promcon4 = 0;
  348.         float ahorro1 = 0, ahorro2 = 0, ahorro3 = 0, ahorro4 = 0;
  349.         float proma1 = 0, proma2 = 0, proma3 = 0, proma4 = 0;
  350.        
  351.             //Llamamos a la función de promedio_chillan.
  352.         float promedios[] = promedio_chillan(promch1, promch2, promch3, promch4, sumch1, sumch2, sumch3, sumch4, diguillin, casilla,
  353.                             itata, casilla2, punilla, casilla3, conce, casilla4);
  354.                 //Imprimimos los promedios de las provincias según Chillán.
  355.                     //Invocamos al arreglo donde guardamos los promedios.
  356.         pw.println("Promedio Provincia de Diguillín a Chillán: "+promedios[0]+"km.");
  357.         pw.println("Promedio Provincia de Itata a Chillán: "+promedios[1]+"km.");
  358.         pw.println("Promedio Provincia de Punilla a Chillán: "+promedios[2]+"km.");
  359.         pw.println("Promedio Provincia de Concepción a Chillán: "+promedios[3]+"km.");
  360.         pw.println("*************************************************************");
  361.             //Llamamos a la función de promedio_conce.
  362.         float promedios2[] = promedio_conce(sumcon1, sumcon2, sumcon3, sumcon4, promcon1, promcon2,
  363.                                             promcon3, promcon4, diguillin, casilla, itata, casilla2,
  364.                                              punilla, casilla3, conce, casilla4);
  365.                 //Imprimimos los promedios de las provincias según Concepción.
  366.                     //Invcamos al arreglo donde guardamos los promedios.
  367.         pw.println("Promedio Pronvicia de Diguillín a Concepción: "+promedios2[0]+"km.");
  368.         pw.println("Promedio Pronvicia de Itata a Concepción: "+promedios2[1]+"km.");
  369.         pw.println("Promedio Pronvicia de Punilla a Concepción: "+promedios2[2]+"km.");
  370.         pw.println("Promedio Pronvicia de Concepción a Concepción: "+promedios2[3]+"km.");
  371.         pw.println("*************************************************************");
  372.             //Llamamos a la función de promedio_ahorro.
  373.         float promedios3[] = promedio_ahorro(ahorro1, ahorro2, ahorro3, ahorro4, proma1, proma2,
  374.                                             proma3, proma4, diguillin, casilla, itata, casilla2,
  375.                                              punilla, casilla3, conce, casilla4);
  376.                 //Imprimimos los promedios de los ahorros según Provincia.
  377.                     //Invocamos al arreglo donde guardamos los arreglos.
  378.         pw.println("Promedio de Ahorro de Diguillín: "+promedios3[0]+"km.");
  379.         pw.println("Promedio de Ahorro de Itata: "+promedios3[1]+"km.");
  380.         pw.println("Promedio de Ahorro de Punilla: "+promedios3[2]+"km.");
  381.         pw.println("Promedio de Ahorro de Concepción: "+promedios3[3]+"km.");
  382.         pw.println("*************************************************************");
  383.         }catch (IOException e){
  384.             e.printStackTrace();
  385.         } finally {
  386.             try {
  387.             // Nuevamente aprovechamos el finally para
  388.             // asegurarnos que se cierra el fichero.
  389.             if (null != fr)
  390.             fr.close();
  391.             } catch (Exception e2) {
  392.             e2.printStackTrace();
  393.             }
  394.         }
  395.     }
  396. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement