es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cuando se tiene una cadena de caracteres (String) y un número entero (int) como salida, ¿cómo puedo imprimir primero la cadena de caracteres?

Este código no funciona, cada vez que ingreso primero datos de tipo String y luego datos de tipo int, simplemente acepta la entrada y no imprime los datos. Si cambio:

String name = input.nextLine();
int age = input.nextInt(); 

la posición de estos dos bloques de código, y luego ingreso int primero y String como segundo valor, después de eso imprime felizmente el primer número int y luego el String. Por favor, ayúdame a resolverlo. Quiero poder ingresar el nombre y apellido primero y luego quiero tener la edad.

package package1;

import java.util.Scanner;

public class experiment {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        try {
            System.out.println("Ingrese su edad y nombre:");

            String name = input.nextLine();
            int age = input.nextInt();

            System.out.println("Su edad es: " + age);
            System.out.println("Su nombre es: " + name);
        } finally {
            input.close();
        }
    }

}

Mi entrada es:

Aks Eyeless 2022

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema con este código es que cuando ingresas una cadena de texto seguida de un entero, el input.nextLine() para la cadena de texto no está consumiendo el carácter de nueva línea dejado por el input.nextInt() para el entero. Por lo tanto, la próxima vez que llames a input.nextLine(), este consumirá el carácter de nueva línea restante en lugar de esperar una nueva entrada. Una forma de solucionar esto es agregar un input.nextLine() después de input.nextInt() para consumir el carácter de nueva línea restante antes de intentar ingresar la cadena de texto. Aquí está el código actualizado:

    package package1;
    
    import java.util.Scanner;
    
    public class experimento {
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            try {
                System.out.println("Por favor ingresa tu nombre y edad: ");
    
                String nombre = input.nextLine();
                int edad = input.nextInt();
                input.nextLine(); // consumir carácter de nueva línea restante
    
                System.out.println("Tu nombre es: " + nombre);
                System.out.println("Tu edad es: " + edad);
            } finally {
                input.close();
            }
        }
    }
    

    Ahora puedes ingresar la cadena de texto primero y luego el entero, y el código mostrará correctamente el nombre seguido de la edad.

Comments are closed.