Java - Exception in thread "main" java.lang.ArithmeticException: / by zero

 
Vista:

Exception in thread "main" java.lang.ArithmeticException: / by zero

Publicado por Yamil (2 intervenciones) el 30/09/2018 03:04:29
hola
tengo que hacer una actividad para la universidad y la verdad eh colapsado un poco y queria preguntar si alguien me puede ayudar, el enunciado dice :
3) Realizar una programa que acepte un conjunto de palabras hasta ingresar la palabra "fin" (mayúsculas o minúsculas) y determine:

a) Cantidad de palabras ingresadas.
b) Promedio de letras por palabra.
despues de mucho rato intentandolo ( nunca habia usado java) esto es lo que hice (netbeans):

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
package ejercicio_3;
import java.util.Scanner;
public class Ejercicio_3 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int Rnum = 0;
        int CP = 0;
        System.out.println("ingresa cualquier palabra : ");
        System.out.println("si deseas dejar de ingresar escriba fin");
        String cad;
        int Val = 1;
        boolean MA;
        String fin = "FIN";
        while (MA = (Val!=0)){
            cad = in.next();
            Val = cad.compareToIgnoreCase(fin);
            int Snum = 0;
            int num = cad.length();
            Rnum = num + Snum;
            Snum = num;
        }
        int Pnum = Rnum/CP;
        System.out.println("la cantidad de palabras que ingresaste fue: " + CP);
        System.out.println("el promedio de cantidad de letras fue de: " + Pnum);
    }
}
pero al iniciar el programa y escribir fin se muestra el siguente error:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at ejercicio_3.Ejercicio_3.main(Ejercicio_3.java:22)
de verdad que les agradeceria si me pudieran decir en que estoy fallando :(
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
Imágen de perfil de xve
Val: 686
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Exception in thread "main" java.lang.ArithmeticException: / by zero

Publicado por xve (345 intervenciones) el 30/09/2018 09:55:51
Hola Yamil, el problema que tienes, es que la variable CP vale 0 y no se puede dividir un numero entre 0!!!

Creo que te falta contar las palabras, no?
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

Exception in thread "main" java.lang.ArithmeticException: / by zero

Publicado por Yamil (2 intervenciones) el 30/09/2018 18:46:55
Por alguna razón no lo copie pero la variavle CP salia justo debajo de while como CP++ ese era mi contador de palabras
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Exception in thread "main" java.lang.ArithmeticException: / by zero

Publicado por Kabuto (1381 intervenciones) el 30/09/2018 20:18:04
Incluso colocando el contador de palabras, no está funcionando bien.
No se está calculando el promedio de letras correctamente, porque solo se está guardando la longitud de la última palabra introducida (que siempre es "fin")

Eliminando algunas líneas innecesarias y con unos pequeños cambios, ya funciona:
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
public class Ejercicio_3 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int Rnum = 0;
        int CP = 0;
        System.out.println("ingresa cualquier palabra : ");
        System.out.println("si deseas dejar de ingresar escriba fin");
        String cad;
        int Val = 1;
        //boolean MA; Innecesario
        String fin = "FIN";
        while (Val!=0){
            cad = in.next();
            CP++;//Contamos palabras
            Val = cad.compareToIgnoreCase(fin);
            Rnum = Rnum + cad.length();//Acumulamos numero de letras de todas las palabras
 
            /* Demasiadas lineas para contar letras, y además no lo está haciendo bien
            int Snum = 0;
            int num = cad.length();
            Rnum = num + Snum;
            Snum = num;*/
        }
        //int Pnum = Rnum/CP;Innecesario
        System.out.println("la cantidad de palabras que ingresaste fue: " + CP);
        System.out.println("el promedio de cantidad de letras fue de: " + Rnum/CP);
        in.close();//No es obligatorio, pero es buena costumbre "cerrar" el objeto Scanner cuando ya no se va a usar mas
    }
}
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