Autor Tema: Java código práctica buscar encontrar número digitado en arreglo y decir si está  (Leído 2755 veces)

Jarol Salazar

  • Sin experiencia
  • *
  • Mensajes: 6
  • Estudiante de Informática Empresarial.
    • Ver Perfil
Necesito ayuda con este código. Se supone que debería buscar el número digitado en un arreglo y decir si está o no, pero estoy iniciándome en esto y no sé como completar la parte del código que me falta.

Gracias de antemano :D


Código: [Seleccionar]
package práctica1;

import java.util.Scanner;

public class Práctica5 {

    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int numeros = 0;
        int[] num = new int[4];
        System.out.println("bienvenida X");
        System.out.println("Digite el numero que desea buscar");
        numeros = entrada.nextInt();
        int num1 []={1,2,3,4};
        for (int i = 0; i < num.length; i++);
       
        {
            if (num == num1) {
                System.out.println("El número se encuentra en el registro"
                        + "y esta en la posición ");
            } else{
                System.out.println("El número no se encuentra en el registro");
            }
        }
    }
« Última modificación: 24 de Septiembre 2020, 12:07 por Alex Rodríguez »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re:Buscar un número en un arreglo
« Respuesta #1 en: 21 de Julio 2019, 23:43 »
Hola, hay varios errores.

Al bucle for le has puesto un punto y coma ; justo tras la declaración.
Esto hace que el bucle for quede cerrado, lo que has puesto después entre llaves, ha quedado fuera del for. De hecho, el bucle for está vacío.

Además estás declarando dos arreglos, uno con números y otro vacío. Solo necesitas un arreglo.

En el IF donde haces la comparación, estás comparando los dos arreglos.
Tienes que comparar que el usuario ha pedido buscar, con los elementos que hay dentro del arreglo.
Para acceder a cada elemento del arreglo usas los corchetes y dentro pones el valor del indice del elemento que quieres consultas.
En este caso, como queremos consultarlos todos, usamos el valor de la variable i que el bucle for incrementa en cada repetición.

Y es mejor poner nombres más descriptivos para identificar a simple vista que es cada elemento del programa, luego evitamos confundir elementos.


Prueba con los cambios siguientes, aunque este código presenta un problema que comento después.

Código: [Seleccionar]
package práctica1;

import java.util.Scanner;

public class Práctica5 {

    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int numBuscar= 0;
        int[] arregloNumeros= {1,2,3,4};
        System.out.println("bienvenida X");
        System.out.println("Digite el numero que desea buscar");
        numBuscar = entrada.nextInt();
        for (int i = 0; i < arregloNumeros.length; i++)
        {
            if (arregloNumeros[i] == numBuscar) {
                System.out.println("El número se encuentra en el registro"
                        + "y esta en la posición " + i);
            } else{
                System.out.println("El número no se encuentra en el registro");
            }
        }
entrada.close();
    }

El programa ya funciona, pero verás que por cada número del arreglo, va a salir un mensaje en pantalla.
Esto es porque el mensaje lo hemos puesto dentro del bucle, así que por cada repetición del bucle, se mostrará un mensaje.

Esto podemos solucionarlo usando un valor boolean que solo adopte valor true si el número ha sido encontrado. Luego, cuando el bucle haya terminado, consultamos que valor tiene este boolean y ya decidimos que mensaje hay que mostrar.

Si queremos además seguir informando de la posición donde se ha encontrado el número, entonces tendremos que declarar la variable i antes del bucle for. Ya que al estar declarada dentro del mismo bucle for, esta variable i deja de existir cuando el bucle ha terminado sus tareas.

Prueba ahora con estos cambios:

Código: [Seleccionar]
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
int numBuscar= 0;
int[] arregloNumeros= {1,2,3,4};
System.out.println("bienvenida X");
System.out.println("Digite el numero que desea buscar");
numBuscar = entrada.nextInt();

boolean encontrado = false;
int i;
for (i = 0; i < arregloNumeros.length; i++)
{
if (arregloNumeros[i] == numBuscar)
encontrado = true; //Sí se ha encontrado el número
}

if (encontrado == true) {
System.out.println("El número se encuentra en el registro"
+ " y esta en la posición " + i);
} else{
System.out.println("El número no se encuentra en el registro");
}

entrada.close();
}


Por cierto, evita usar tildes, como los que has puesto en las palabras "práctica". Evita de hecho cualquier símbolo o carácter que no pertenezca al alfabeto ingles, como las ñ por ejemplo
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".