Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
7
respuestas

duda

Hola al escribir for no me sale el foreach, que puede estar pasando??

7 respuestas

Hola Estudiante!, como estas?

Podrías compartirnos más información para poder ayudarte? no entiendo del todo bien tu duda.

Estamos aquí para ayudarte, saludos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!

hola la duda es que al poner for salen opciones , pero foreach como muestra en el video esa no me sale, yo sé que no la vamos a ocupar ahora pero me gustaría saber que puede estar pasando. Y lo otro es que al ingresar notas como 9.0 , me genera error y me hace poner notas con coma como 9,0?? por que puede pasar eso?? ella en el video lo ingresa con punto 9.0

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidadIngrese aquí la descripción de esta imagen para ayudar con la accesibilidadIngrese aquí la descripción de esta imagen para ayudar con la accesibilidad

no estoy muy seguro de tu error pero en java el scanner tiene un problema a veces al leer números y otro tipo de variables en lina por decirlo de alguna manera. siempre que uses el teclado por ejemplo double num = teclado.nextDouble(); añádele la siguiente línea después teclado.nextLine(); esto pasa por que al parecer queda algo en la memoria del teclado y muchas veces va a dificultar la lectura por scanner...

y cob respecto al foreach te recomiendo que lo escribas manualmente para que te vallas acostumbrando, los ide nos dan algunos atajos, pero tambien esta bien al comenzar escribirlo para que podamos recordarlos igual podes llamar el metodo foreach del array y funciona de la misma manera, solo que la sintaxis es un poco diferente

Hola en el error es que si ingreso 9,2 por ejemplo, con coma lo pasa, pero si pongo 9.2 como en el video con punto, me hace error, no se porque pasa eso??

El problema de las entradas entre las comas y puntos tiene que ver mas que nada por el sistema numerico de cada pais, en estados unidos para los decimales se utiliza el . y el separador de miles utilizan la coma... si en tu pais es diferente siempre te va a tirar error Te recomiendo que no le des importancia a eso pero si queres una solucion a ese problema podes hacer las validaciones correspondiente y cambiarlos al sistema de tu pais, por ejemplo:

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Ingrese numero");
        String input = scanner.nextLine();
        double number = parseNumber(input);
        if (number == -1) {
            System.out.println("Numero invalido");
        } else {
            System.out.println("Numero: " + number);
        }
    }


    public static double parseNumber(String input){
        //verificamos si tiene letras o espacios
        if (input.matches(".*[a-zA-Z]+.*") || input.matches(".*\\s+.*")) {
            System.out.println("Validando si tiene letras o espacios");
            return -1;
        }
        //verificamos si tiene caracteres especiales
        if (input.matches(".*[!@#$%^&*()_+=\\[\\]{};':\"\\\\|<>\\/?]+.*")) {
            System.out.println("Validando si tiene caracteres especiales");
            return -1;
        }
        //verificamos que solo tenga 1 punto
        if (input.chars().filter(ch -> ch == '.').count() > 1) {
            System.out.println("Validando si tiene mas de un punto");
            return -1;
        }
        //verificamos que no tenga punto al inicio o al final
        if (input.startsWith(".") || input.endsWith(".")) {
            System.out.println("Validando si tiene punto al inicio o al final");
            return -1;
        }
        //verificamos que solo tenga una coma
        if (input.chars().filter(ch -> ch == ',').count() > 1) {
            System.out.println("Validando si tiene mas de una coma");
            return -1;
        }
        //verificamos que no tenga coma al inicio o al final
        if (input.startsWith(",") || input.endsWith(",")) {
            System.out.println("Validando si tiene coma al inicio o al final");
            return -1;
        }
        //verificamos que no tenga coma y punto al mismo tiempo
        if (input.contains(",") && input.contains(".")) {
            System.out.println("Validando si tiene coma y punto al mismo tiempo");
            return -1;
        }
       //si tiene coma la reemplazamos por punto
        if (input.contains(",")) {
            input = input.replace(",", ".");
        }
        return Double.parseDouble(input);
    }

lo que hacemos es leer la entrada como si fuera un string y despues de unas validaciones lo reemplazamos en caso de que sea necesario o si no que continue con la conversion, podes usar ese metodo hasta que el usuario ingrese algun numero valido tambien podes hacerlo mas optimo el metodo y hacer algunas validaciones pero espero te sirva de ejemplo