Java - Donde esta el fallo?

 
Vista:
sin imagen de perfil

Donde esta el fallo?

Publicado por Andrea (1 intervención) el 04/11/2017 15:08:24
Dado un vector para 5 elementos (números enteros) introducidos por teclado, realice las siguientes operaciones
• Sume todos los números leídos
• Realice la División de dichos entre la cantidad de números leídos (Es decir, calcular promedio).
• Guarde los datos del vector en el archivo
• Realice validaciones, según las excepciones que puedan generarse.

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
package labvector;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class VectorArchivo {
public static void main(String[] args)
            throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try{
String[] arrayEntrada = new String[5];
boolean ok = true;
int suma = 0;
float promedio = 0;
for (int i=0; i<arrayEntrada.length && ok; i++ )
{
    System.out.println("Ingrese un número");
String linea = br.readLine();
   suma=suma+arrayEntrada.length;
   //promedio=suma/arrayEntrada.length;
if (linea.equals("fin"))
{
ok = false;
}else
{
arrayEntrada[i]= linea;
}
}
String archivo = "Vector.txt";
File a = new File(archivo);
FileWriter va = new FileWriter(a);
BufferedReader in= new BufferedReader(br);
for (int i=0;i<arrayEntrada.length;i++)
{
va.write(arrayEntrada[i]+"\n");
//va.write(""+suma);
//va.write("Promedio:"+promedio);
}
va.close();//al final se cierra el fichero para guardar los cambios.
}catch (Exception e){e.printStackTrace();}
}//fin de main
}//fin de clase
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Donde esta el fallo?

Publicado por Juan Francisco (58 intervenciones) el 05/11/2017 21:25:01
He encontre algunos fallos , lo primero decir que sino le pones ninguna ruta a tu archivo lo crea dentro de tu proyecto eclipse o netbeans
lo segundo que FileWriter el metodo writer() solo te deja escribir caracter a caracter , para utilizar saltos de linea utiliza PrintWriter , tercero que la suma de numeros debes de hacer un parseo de string a int si el usuario , no pulsa fin , cuarto llevar un contador de numeros por si pulsa menos de 5 numeros y da fin por que el pomedio cambiara no sera el tamaño de tu arreglo sino del contador por lo que tengas que dividir la suma , y por ultmo el segundo bucle donde escribes en fichero llegara solo hasta los numero introducidos , tu contador y no hasta el final del arreglo por que sino has introducido nada en esa posicion te escibira un 0 en tu archivo 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
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
try {
    String[] arrayEntrada = new String[5];
    boolean ok = true;
    int suma = 0;
    float promedio = 0;
    int contador=0;//Para saber cuantos numero llevas metidos 
    for (int i = 0; i < arrayEntrada.length && ok; i++) {
        System.out.println("Ingrese un número");
        String linea = br.readLine();
 
 
        if (linea.equals("fin")) {
            ok = false;
        } else {
              suma+=Integer.parseInt(linea);//Como lees atraves de un buffer convertir el string a int , para poder realizar la suma de todos los numeros metidos si entra aqui es por que es difernte de fin , si metes un texto y no numero puede saltar una excepcion
            arrayEntrada[i] = linea;
           contador++;
        }
    }
    promedio=suma/contador;//el promedio sera la suma de numeros entre la cantidad de numeros metidos
    String archivo = "Vector.txt";//Si no le pones ninguna ruta sera el propio poryecto donde cree o busque, es decir , tu proyecto en netbeans o eclipse
    File a = new File(archivo);
     FileWriter va = new FileWriter(a);//cada vez que lo ejecutes machacas lo anterior y lo crea 
 
     PrintWriter p=new PrintWriter(va);//le da formato a lo escrito
    for (int i = 0; i <contador; i++) {//hasta contador para que no escriba las posiciones donde no haya numero , por si pulsa fin
 
        p.println(arrayEntrada[i]);//utilizar printWriter por que puedes darle formato , saltos de lines etc con FileWriter solo caracater a caracter o string no permite salto de linea
 
    }
    p.println(suma);//alfinal escribir la suma
    p.println(promedio);//escribir promedio
   va.close();//cerra archivo
   p.close();//cerrar printer esto es importante sino puede ser que no escriba utilizar try con recursos para optimizar
} catch (Exception e) {
    e.printStackTrace();
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar