I have the following error and I can not find the reason for its origin.
Under this situation what methodology can I follow to solve the error?
Analyze the code and the piece that sends the error is:
arrayMuestras[i] = sc.nextDouble();
If all my data types are the same, why do I get the error?
package muestrasclinicas;
import java.util.*;
public class MuestrasClinicas {
//Globales
private static Scanner sc = new Scanner(System.in); //ok
private static int opc = 0; //ok
private static double[] arrayMuestras; // ok
public static void main(String[] args) {
boolean mainLoop = true;
boolean arrayEneabled = false;
do {
menu();
opc = sc.nextInt();
switch (opc) {
case 1:
System.out.println("\n --- Capturar muestras --- ");
System.out.println(" - Cantidad de muestras:");
opc = sc.nextInt();
cantMuestras(opc);
arrayEneabled = true;
break;
case 2:
System.out.println("\n --- Promedio --- ");
System.out.println(" - El promedio total es: " + promedio(arrayEneabled) + "\n");
break;
case 3:
System.out.println("\n --- Varianza --- ");
System.out.println(" - La varianza total es: " + varianza(arrayEneabled) + "\n");
break;
case 4:
System.out.println("\n --- Varianza --- ");
System.out.println(" - La varianza total es: " + varianza(arrayEneabled) + "\n");
break;
case 5:
System.out.println("\n --- Desviacion estandar --- ");
System.out.println(" - La desviacion estandar es: " + Math.sqrt(varianza(arrayEneabled)) + "\n");
mainLoop = false;
System.out.println(" * Adios!...\n");
break;
default:
System.out.println(" * Escribe una opcion valida...\n");
break;
}
} while (mainLoop == true);
sc.close();
}
public static void menu() {
System.out.println(" ***** Sistema muestras clinicas *****");
System.out.println(" 1. Capturar muestras");
System.out.println(" 2. Promedio");
System.out.println(" 3. Varianza");
System.out.println(" 4. Desviacion estandar");
System.out.println(" 5. Terminar");
System.out.println(" -. Selecciona una opcion:");
}
public static void cantMuestras(int cantMuestras) {
arrayMuestras = new double[cantMuestras];
for (int i = 0; i < cantMuestras; i++) {
System.out.println(" - Muestra no° " + (i + 1) + ":");
arrayMuestras[i] = sc.nextDouble(); // < -- REVISAR TIPO DE ENTRADA, QUE SEA DOUBLE(Si es)
}
System.out.println("");
}
public static double promedio(boolean opc) {
double totalProm = 0;
if (opc == true) {
for (int i = 0; i < arrayMuestras.length; i++) {
totalProm += arrayMuestras[i];
}
totalProm = totalProm / arrayMuestras.length;
} else {
System.out.println(" * Es necesario capturar las muestras...\n");
}
return totalProm;
}
public static double varianza(boolean opc) {
if (opc == true) {
double s = 0; // <- Varianza
int n = arrayMuestras.length; // <- Tamaño de la muestra
double sumatoriaMuestras = 0; // <- Termino del conjunto de datos
double prom = 0; //Media de la muestra
//Calclula la media de las muestras
for (int i = 0; i < arrayMuestras.length; i++) {
prom += arrayMuestras[i];
}
prom = prom / arrayMuestras.length;
//Restale la media a cada punto de datos
double[] mediaResta;
mediaResta = arrayMuestras;
for (int i = 0; i < arrayMuestras.length; i++) {
mediaResta[i] = Math.pow(mediaResta[i] - prom, 2);
sumatoriaMuestras += mediaResta[i];
}
//Divide por n-1
s = sumatoriaMuestras / (n - 1);
return s;
} else {
System.out.println(" * Es necesario capturar las muestras...");
return 0;
}
}
}