Problema con programa de java basico

Ofertas en PcComponentes: Top Verano y PcCom Days
Hola, hoy un profesor nos ha mandado un ejercicio que es realmente facil, ya que estamos empezando, pero tengo un problema por que no logro entender una cosa.

El enunciado del problema es:
Cargar por teclado un numero entero.
Visualizar la suma del numero y los 20 siguientes y la suma de los 20 siguientes pares

¿Numero?12
Suma del numero 12 y los 20 siguientes es: 462
Suma de los 20 siguientes pares del 12 es : 660

y el codigo que puse para su funcionamiento es el siguiente:


class Veintesiguientes
{
   public static void main(String[]args)
   {
   //variables
   int cont,suma=0,numero,ax=0;
   
   //pedimos datos:
   System.out.println("¿Numero?");
   numero=cs1.Keyboard.readInt();
   
   for(cont=numero;cont<=(numero+20);cont++)
   {
   suma+=cont;
   }
   
   System.out.println("Suma del numero "+numero+" y los 20 siguientes es: "+suma);
   suma=0;
   cont=0;
   
   
   if (numero%2==0)
   {
   numero+=2;
   
   for(cont=numero;cont<(numero+40);cont+=2)
   {
   suma+=cont;
   }
   }
   else
   {
   numero+=1;
   for(cont=numero;cont<(numero+40);cont+=2)
   {
   suma+=cont;
   }
   }
   System.out.println("Suma de los 20 siguientes pares del "+numero+" es: "+suma);
   
   }
}


El programa hace lo que pone en el ejemplo,y he comprobado con otros numeros y tambien pero si se fijan, en el primer "for" la condicion es <=(numero+20) por lo que el bucle se repetira 21 veces y no 20 (cosa que los otros si hacen 40 y no 41) pero el caso es que los resultados les da bien,

Pues bien, no logro entender por que para que realice el bucle 20 veces tengo que poner el <= y no solamente < y me tiene hecho un lio.

espero no haberme esplayado mucho en el mensaje y puedan ayudarme pronto.

Un saludo!
Lo del 40 y 41 no lo he entendido.

De todos modos, a tu pregunta, el porque el <= y no el <, la cosa es la siguiente:

Imaginate que quiero en lugar del 20 los 2 siguientes:

Entro el numero 1

"Visualizar la suma del numero y los 2 siguientes"

for int i = 1; i <= 1+2; i++
sumara
1
2
3

el 1 y los 2 siguientes

Si pusieras mas pequeño (sin el igual) solo seria el 1 y el 2, con lo cual no tendrias tu numero y los 20 siguientes, si no tu numero y los 19 siguientes


No se si te sirve, ya me contaras

EDITO: con el <= ejecutaras el bucle 21 veces, con el < lo ejecutaras 20 veces, pero tu quieres ejecutarlo 21 veces, para el numero y para los 20 siguientes
Ante todo muchas gracias por contestar tan rapido jeje, lo del 40 y 41 era por lo que has comentado de que no sumas el numero si no que sumas ya otros, creo que ya te he entendido,

me referia a que en el primer bucle se ejecuta 21 veces y no 20 para sumar 20 numeros y en el segundo para hacerlo 20 veces se ejecuta 20 y no 21.

pero vamos, que lo he entendido jeje la clave estaba en el enunciado con el numero y sus 20 siguientes = 21 y por otro lado la suma de sus 20 numeros pares siguientes =20 jeje

muchas gracias :)

Un saludo!
Si, eso es, lo que te podia liar era eso de querer en los dos 20 numeros, pero en uno contabas el propio (entonces, 21 iteraciones) y en el otro no (20 iteraciones)

Lo que pasa es que esta todo un poco liado y me explico bastante mal, pero si lo has entendido ya esta.

Cuando tengas problemas de cosas de esas lo mejor es papel y lapiz y ejecutarlo a mano (con numeros mas pequeños). Muy recomendable programar siempre con un papel y un lapiz al lado (almenos a mi me va muy muy bien)
jeje, si si lo entendi, era eso mismo que habia que entenderlo bien jeje, y muchas gracias por el consejo, la verdad es que no suelo usar papel y boli pero el otro dia me toco hacer un programa un poco mas complicado y si no es por que hice lo que ahora has dicho, no lo habria resuelto jeje.

Muchas gracias :D un saludo!
4 respuestas