Foro de elhacker.net

Programación => Java => Mensaje iniciado por: txipiron en 13 Enero 2017, 11:25 am



Título: Ejercicio java bucle
Publicado por: txipiron en 13 Enero 2017, 11:25 am
Hola
me estoy iniciando en el lenguaje Java y me toca hacier un ejercicio que no acaba por salirme. El enunciado es solicitar al usuario un número y que vuelva a solicitar tantos números como los introducidos en la respuesta anterior. Cuando el usuario deje de introducir números se debe mostrar en pantalla el mínimo de todos. Este es mi código a ver si me podéis dar alguna pista. Me da los resultados primeros pero a la hora de mostrar el mínimo no hace nada.
import java.util.Scanner;
Código
  1. public class SecuenciaNumerosEnteros
  2. {
  3.    public static void main(String[] args) {
  4.  
  5.        int numeroentero;
  6.        int secuenciaenteros=0;
  7.        int menor=9999;
  8.  
  9.  
  10.        Scanner teclado=new Scanner(System.in);
  11.        System.out.print("Introducir un número;");
  12.        numeroentero=teclado.nextInt();
  13.  
  14.  
  15.        System.out.print("Introducir una secuencia de"+" "+numeroentero+" "+"enteros");
  16.  
  17.        for(int i=0;i<=numeroentero;i++) {
  18.  
  19.            secuenciaenteros=teclado.nextInt();
  20.  
  21.  
  22.        if(secuenciaenteros<menor){
  23.            menor=secuenciaenteros;
  24.  
  25.  
  26.        }
  27.  
  28.    }
  29.  
  30.        System.out.print("El valor menor de la secuencia introducida es"+menor);
  31.  
  32.  
  33.  
  34. }
  35. }






· Los códigos deben ir en etiquetas GeSHi
>Lee las reglas (http://foro.elhacker.net/reglas.htm)
-Engel Lex


Título: Re: Ejercicio java bucle
Publicado por: MNicolas en 10 Febrero 2017, 11:40 am
Asigna a menor Integer.MAX_VALUE; Es una constante que tiene el valor máximo que puede almacenar un integer, porque según está el programa si introduce números mayores a 9999 te saldrá que el menor es 9999 cuando ese número nunca lo introdujo. Si pones el max value no podrá introducir mayores valores porque daría error porque los int tienen un máximo.

Y si no te sale es porque el bucle te pide un número más del que estas solicitando:

Si el usuario introduce ( en numeroentero ) un 6 el bucle da 7 vueltas, ¿por qué? Porque la i del bucle empieza en 0 y la condición del bucle es mientras i <= numeroentero.

Las soluciones es poner i = 1 o quitar el igual "=" de i<=numeroentero.

Como esta ahora introduciendo en numeroentero un 3

i = 0; i<=3 -> si ejecuta el contenido del bucle
i = 1; i<=3 -> si ejecuta el contenido del bucle
i = 2; i<=3 -> si ejecuta el contenido del bucle
i = 3; i<=3 -> si ejecuta el contenido del bucle
i = 4; i<=3 -> no se cumple la condición, acaba el bucle

Como ves se ejecuta 4 veces a pesar de introducir un 3. De ahí o que empiece en uno o quitar el igual. Se ejecutará cunado i = 1,2 y 3 o i=0,1 y 2 respectivamente.

Saludos!