Autor
|
Tema: ayuda con ejercicio en java (Leído 3,522 veces)
|
alan95
Desconectado
Mensajes: 5
|
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 public static void main (String[] args) throws java.io.IOException { File file = new File ("miarchivo.txt"); Scanner lector=new Scanner(file); int suma=0; int cant=0; while(lector.hasNext()) { int numero=lector.nextInt(); suma=suma+numero; cant++; } System.out.println("promedio de numeros es : " + suma/cant); lector.close();
|
|
|
En línea
|
|
|
|
DarK_FirefoX
Desconectado
Mensajes: 1.263
Be the change you wanna see in te world
|
No se realmente si en java existe pero en C#(.NET) puedes hacer algo muy sencillo con una string, al cual le puedes hacer string lineaLeida = "1,2,3,4"; 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
Mensajes: 188
|
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: import java.io.File; import java.util.Scanner; public class ImprimirPromedios { public static void main (String[] args ) { Scanner lector = null; try { lector = new Scanner(file); } System. out. println("Error: "+ex. getMessage()); } int suma=0; int cant=0; /* Sumo todos los números de todas las lineas y después la divido por la cantidad de números */ while(lector.hasNext()) { //Leo una linea completa del archivo String numerosDelArchivo = lector. nextLine(); //Separo los numeros y los guardo en un array de String String[] numerosSeparados = numerosDelArchivo. split(","); //Sumo todos los numeros del array y los guardo con un nuevo valor en la variable suma for(int i = 0; i < numerosSeparados.length; i++) { suma += Integer. parseInt(numerosSeparados [i ]); cant++; } } System. out. println("Promedio de números es : " + suma /cant ); lector.close(); } }
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
Mensajes: 625
|
Un método pequeño: List<Integer> amounts = new ArrayList<>(); Path path = Paths.get(directory, fileName); Charset charset = Charset.forName("UTF-8"); // lee todas las lineas del fichero List<String> lines = Files.readAllLines(path, charset); if(lines == null || lines.empty()) { } String[] tokens = line. split(","); int sum = 0; } amounts.add(sum); } return amounts; }
Modo de uso: try { List<Integer> amounts = getAmountsOf("D://prueba", "fichero.txt"); System. out. println("Error al leer fichero: "+e. getMessage()); System. out. println("Una línea contiene un carácter no numérico: "+e2. getMessage()); System. out. println(e3. getMessage()); // imprime: 'El archivo está vacío' }
|
|
« Ú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
Mensajes: 5
|
pablopl te mando un privado te llego ? saludos
|
|
|
En línea
|
|
|
|
Usuario Invitado
Desconectado
Mensajes: 625
|
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
Mensajes: 5
|
ya lo pude resolver ahi lo mando por si le sirve a alguien public class Archivo { { Scanner s; try { while( ( lineas = br.readLine() ) != null ) { int i = 0; int cant=0; int suma=0; String[]arraylineas =lineas. split(","); for (i = 0; i < arraylineas.length; i++) { suma += Integer. parseInt(arraylineas [i ]); cant++; }//for System. out. println("Promedio de números es : " + suma /cant ); }//while } e.printStackTrace(); } } }
|
|
|
En línea
|
|
|
|
PabloPbl
Desconectado
Mensajes: 188
|
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: import java.io.File; import java.util.ArrayList; import java.util.Scanner; public class ImprimirPromedios { public static void main (String[] args ) { Scanner lector = null; try { lector = new Scanner(file); } System. out. println("Error: "+ex. getMessage()); } ArrayList<Integer> promedios = new ArrayList<Integer>(); int suma=0; int cant=0; /* Sumo todos los numeros de todas las lineas y despues la divido por la cantidad de numeros */ while(lector.hasNext()) { //Leo una linea completa del archivo String numerosDelArchivo = lector. nextLine(); //Separo los numeros y los guardo en un array de String String[] numerosSeparados = numerosDelArchivo. split(","); //Sumo todos los numeros del array y los guardo en la variable suma for(int i = 0; i < numerosSeparados.length; i++) { suma += Integer. parseInt(numerosSeparados [i ]); cant++; } promedios.add(suma/cant); suma = 0; cant = 0; } for(int i = 0; i < promedios.size(); i++) { System. out. println(i +1+") promedio "+i +1+" es: "+promedios. get(i )); } lector.close(); } }
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: int promedioTotal = 0; for(int i = 0; i < promedios.size(); i++) { promedioTotal += promedios.get(i); } System. out. println("El promedio total de lineas es: "+promedioTotal /promedios. size());
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
una ayuda en un ejercicio en java.
Java
|
XpandyX
|
2
|
3,779
|
24 Enero 2011, 00:10 am
por XpandyX
|
|
|
Ayuda con ejercicio de POO en java
Java
|
Erick9536
|
1
|
2,880
|
7 Abril 2012, 20:11 pm
por [Case]
|
|
|
Ayuda ejercicio en java
Ejercicios
|
SOADOSK
|
1
|
3,000
|
26 Febrero 2013, 17:50 pm
por 1mpuls0
|
|
|
Ayuda con ejercicio de Java.
Java
|
Bafina
|
1
|
1,683
|
8 Octubre 2014, 17:00 pm
por MeCraniDOS
|
|
|
Ayuda con ejercicio java
Java
|
StratosMaster
|
3
|
2,401
|
18 Octubre 2014, 20:40 pm
por StratosMaster
|
|