elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  ayuda con ejercicio en java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda con ejercicio en java  (Leído 3,259 veces)
alan95

Desconectado Desconectado

Mensajes: 5


Ver Perfil
ayuda con ejercicio en java
« en: 5 Abril 2015, 00:40 am »

hola necesito resolver un ejercicio el cual me plantea lo sig: leer archivo(.txt) con varios n° por linea separados por "," y por cada linea del archivo imprimir el promedio

osea lo que tengo en el archivo .txt es lo siguiente :
4,5,5,5
8,8,8,8
7,7,5,1

lo podia plantear en cualquier lenguaje el ejercicio , lo plantie en java y me da error me dan una mano para poder terminarlo? gracias


Código
  1. public static void main (String[] args) throws java.io.IOException
  2.    {
  3.  
  4. File file = new File ("miarchivo.txt");
  5. Scanner lector=new Scanner(file);
  6. int suma=0;
  7. int cant=0;
  8. while(lector.hasNext())
  9. {
  10. int numero=lector.nextInt();
  11. suma=suma+numero;
  12. cant++;
  13. }
  14. System.out.println("promedio de numeros es :  "  +  suma/cant);
  15. lector.close();
  16.  


En línea

DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: ayuda con ejercicio en java
« Respuesta #1 en: 5 Abril 2015, 01:20 am »

No se realmente si en java existe pero en C#(.NET) puedes hacer algo muy sencillo con una string, al cual le puedes hacer

Código
  1. string lineaLeida = "1,2,3,4";
  2. string[] separada = lineaLeida.Split(',');

Y te devuelve un array(de strings) separados por el char que le pasaste en al método Split() como parámetro, luego es cuestión de recorrer ese array, sumarlos y calcular el promedio

Salu2s ;)

Mod: Habia puesto dentro del split una comilla como char para hacerle split, me refería a una coma.


« Última modificación: 5 Abril 2015, 10:09 am por DarK_FirefoX » En línea

PabloPbl

Desconectado Desconectado

Mensajes: 188


Ver Perfil
Re: ayuda con ejercicio en java
« Respuesta #2 en: 5 Abril 2015, 07:20 am »

Por lo que veo quieres sumar todos los números de todas las lineas del archivo de texto y luego dividir esa cantidad por el total de valores que hay en el archivo de texto.

Tal como dice DarK_FirefoX también existe ese método split() y funciona de la misma manera en Java, te pongo un ejemplo abajo.
Mira este código e intenta entenderlo:

Código
  1. import java.io.File;
  2. import java.util.Scanner;
  3.  
  4.  
  5. public class ImprimirPromedios {
  6.  
  7.    public static void main(String[] args) {
  8.        File file = new File ("miarchivo.txt");
  9.        Scanner lector = null;
  10.  
  11.        try {
  12.            lector = new Scanner(file);
  13.        }
  14.        catch (Exception ex) {
  15.            System.out.println("Error: "+ex.getMessage());
  16.        }
  17.  
  18.        int suma=0;
  19.        int cant=0;
  20.  
  21.        /*
  22.         Sumo todos los números de todas las lineas y después la divido por la cantidad de números
  23.         */
  24.        while(lector.hasNext()) {
  25.            //Leo una linea completa del archivo
  26.            String numerosDelArchivo = lector.nextLine();
  27.  
  28.            //Separo los numeros y los guardo en un array de String
  29.            String[] numerosSeparados = numerosDelArchivo.split(",");
  30.  
  31.            //Sumo todos los numeros del array y los guardo con un nuevo valor en la variable suma
  32.            for(int i = 0; i < numerosSeparados.length; i++) {
  33.                suma += Integer.parseInt(numerosSeparados[i]);
  34.                cant++;
  35.            }
  36.        }
  37.  
  38.        System.out.println("Promedio de números es :  "  +  suma/cant);
  39.        lector.close();
  40.    }
  41.  
  42. }
  43.  

Oka, comenta si no entendiste algo del código.

Salu2.
« Última modificación: 5 Abril 2015, 07:23 am por PabloPbl » En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: ayuda con ejercicio en java
« Respuesta #3 en: 5 Abril 2015, 08:57 am »

Un método pequeño:

Código
  1. public List<Integer> getAmountsOf(String directory, String fileName) throws IOException, NumberFormatException, RuntimeException {
  2. List<Integer> amounts = new ArrayList<>();
  3. Path path = Paths.get(directory, fileName);
  4. Charset charset = Charset.forName("UTF-8");
  5. // lee todas las lineas del fichero
  6. List<String> lines = Files.readAllLines(path, charset);
  7. if(lines == null || lines.empty()) {
  8. throw new RuntimeException("El archivo est&#225; vac&#237;o");
  9. }
  10. for (String line : lines) {
  11. String[] tokens = line.split(",");
  12. int sum = 0;
  13. for(String token : tokens) {
  14. sum += Integer.parseInt(token);
  15. }
  16. amounts.add(sum);
  17. }
  18. return amounts;
  19. }

Modo de uso:

Código
  1. try {
  2. List<Integer> amounts = getAmountsOf("D://prueba", "fichero.txt");
  3. } catch(IOException e) {
  4. System.out.println("Error al leer fichero: "+e.getMessage());
  5. } catch(NumberFormatException e2) {
  6. System.out.println("Una l&#237;nea contiene un car&#225;cter no num&#233;rico: "+e2.getMessage());
  7. } catch(RuntimeException e3) {
  8. System.out.println(e3.getMessage()); // imprime: 'El archivo est&#225; vac&#237;o'
  9. }
« Última modificación: 5 Abril 2015, 14:59 pm por Gus Garsaky » En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
alan95

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: ayuda con ejercicio en java
« Respuesta #4 en: 8 Abril 2015, 21:28 pm »

pablopl te mando un privado te llego ? saludos
En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: ayuda con ejercicio en java
« Respuesta #5 en: 8 Abril 2015, 21:39 pm »

pablopl te mando un privado te llego ? saludos

Si es personal, perfecto, pero si es sobre éste tema, sería bueno que se resuelva aquí, porque le puede servir a otra persona. Si has solucionado tu problema, por favor marca el tema como solucionado (check verde en la parte superior derecha).
En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
alan95

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: ayuda con ejercicio en java
« Respuesta #6 en: 9 Abril 2015, 17:43 pm »

ya lo pude resolver ahi lo mando por si le sirve a alguien

Código
  1. public class Archivo
  2. {
  3. public static void main (String[] args) throws java.io.IOException
  4.  
  5.    {
  6. File f = new File ("miarchivo.txt");
  7. Scanner s;
  8.  
  9.  
  10. BufferedReader br = null;
  11. try
  12. {
  13. br = new BufferedReader( new FileReader( "miarchivo.txt" ) );
  14.  
  15. String lineas;
  16.  
  17.  
  18.  
  19. while( ( lineas = br.readLine() ) != null )
  20. {
  21. int i = 0;
  22.  
  23.  
  24. int cant=0;
  25. int suma=0;
  26.  
  27. String[]arraylineas=lineas.split(",");
  28. for (i = 0; i < arraylineas.length; i++)
  29. {
  30. suma += Integer.parseInt(arraylineas[i]);
  31.                cant++;
  32.    }//for
  33.  
  34.  
  35. System.out.println("Promedio de números es :  "  +  suma/cant);
  36.  
  37.  
  38. }//while
  39.  
  40. }
  41.   catch( IOException e ) {
  42. e.printStackTrace();
  43.  
  44.  
  45.  
  46.  
  47.   }
  48.   }
  49. }
En línea

PabloPbl

Desconectado Desconectado

Mensajes: 188


Ver Perfil
Re: ayuda con ejercicio en java
« Respuesta #7 en: 10 Abril 2015, 03:37 am »

Acá tenes otra forma de hacerlo.

Tu forma es bastante funcional, pero si quisieras hacer algo con esos promedios desde otra parte del código, te verías limitado.

Solo debes de agregar un ArrayList y hacer un cambio en el for:


Código
  1. import java.io.File;
  2. import java.util.ArrayList;
  3. import java.util.Scanner;
  4.  
  5.  
  6. public class ImprimirPromedios {
  7.  
  8.    public static void main(String[] args) {
  9.        File file = new File ("miarchivo.txt");
  10.        Scanner lector = null;
  11.  
  12.        try {
  13.            lector = new Scanner(file);
  14.        }
  15.        catch (Exception ex) {
  16.            System.out.println("Error: "+ex.getMessage());
  17.        }
  18.  
  19.        ArrayList<Integer> promedios = new ArrayList<Integer>();
  20.  
  21.        int suma=0;
  22.        int cant=0;
  23.  
  24.        /*
  25.         Sumo todos los numeros de todas las lineas y despues la divido por la cantidad de numeros
  26.         */
  27.        while(lector.hasNext()) {
  28.            //Leo una linea completa del archivo
  29.            String numerosDelArchivo = lector.nextLine();
  30.  
  31.            //Separo los numeros y los guardo en un array de String
  32.            String[] numerosSeparados = numerosDelArchivo.split(",");
  33.  
  34.            //Sumo todos los numeros del array y los guardo en la variable suma
  35.            for(int i = 0; i < numerosSeparados.length; i++) {
  36.                suma += Integer.parseInt(numerosSeparados[i]);
  37.                cant++;
  38.            }
  39.            promedios.add(suma/cant);
  40.            suma = 0;
  41.            cant = 0;
  42.        }
  43.  
  44.        for(int i = 0; i < promedios.size(); i++) {
  45.            System.out.println(i+1+") promedio "+i+1+" es: "+promedios.get(i));
  46.        }
  47.  
  48.        lector.close();
  49.    }
  50.  
  51. }
  52.  

De esta forma, tendrías el promedio de cada linea y podrías hacer algunas cosas con esos valores, como por ejemplo obtener el promedio total:

Código
  1. int promedioTotal = 0;
  2.  
  3.        for(int i = 0; i < promedios.size(); i++) {
  4.            promedioTotal += promedios.get(i);
  5.        }
  6.  
  7.        System.out.println("El promedio total de lineas es: "+promedioTotal/promedios.size());
  8.  

Si quieres probar este código, agrégalo al final del main.

Ready, espero que te haya servido, y hazle caso a Gus, si tienes alguna duda al respecto, escríbela aquí, aumentara las probabilidades de recibir una respuesta y puede que también le sirva a alguien mas.

Saludos!
« Última modificación: 10 Abril 2015, 03:40 am por PabloPbl » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
una ayuda en un ejercicio en java.
Java
XpandyX 2 3,588 Último mensaje 24 Enero 2011, 00:10 am
por XpandyX
Ayuda con ejercicio de POO en java
Java
Erick9536 1 2,688 Último mensaje 7 Abril 2012, 20:11 pm
por [Case]
Ayuda ejercicio en java
Ejercicios
SOADOSK 1 2,793 Último mensaje 26 Febrero 2013, 17:50 pm
por 1mpuls0
Ayuda con ejercicio de Java.
Java
Bafina 1 1,567 Último mensaje 8 Octubre 2014, 17:00 pm
por MeCraniDOS
Ayuda con ejercicio java
Java
StratosMaster 3 2,206 Último mensaje 18 Octubre 2014, 20:40 pm
por StratosMaster
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines