Why do I have a "java.util.InputMismatchException" in my scanner?

0

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;
    }

}
}
    
asked by Mike Guijarro 02.11.2018 в 16:24
source

0 answers