Java - ¿Alguien me puede decir por qué no funciona el programa?

 
Vista:

¿Alguien me puede decir por qué no funciona el programa?

Publicado por Chai (14 intervenciones) el 13/10/2018 16:09:39
SON DOS PROGRAMAS

ESTE ES EL PRIMERO:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package semana6;
 
import java.util.Scanner;
 
public class Ejercicio5 {
 
    public static void main(String[] args) {
        Scanner teclado = new Scanner (System.in);
        int suma=0;
        System.out.println("Indica el límite superior para generar numeros perfectos y \r\n" +
                "pulsa Enter:");
        int a = teclado.nextInt();
        teclado.nextLine();
        int i;
        int j;
        for (i=a; i==0; i--);{
            for (j = 1; j > a; j++); {
                if (a % j == 0) {
                    suma = suma + j;
                    if (suma == a) {
                        System.out.println(i);
                    }
                }
 
            }
        }
        teclado.close();
    }
}

Y ESTE ES EL SEGUNDO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package semana6;
 
import java.util.Scanner;
 
public class Ejercicio3 {
 
	public static void main(String[] args) {
		Scanner teclado = new Scanner (System.in);
		System.out.println("Introduce un número");
		int a= teclado.nextInt();
		System.out.println("Introduce el número de múltiplos a imprimir");
		int b= teclado.nextInt();
		for(int i=a; i==a*b; i=i+a) {
			System.out.println(i);
		}
		teclado.close();
	}
 
}

EN LOS DOS NO FUNCIONA A PARTIR DEL FOR
SOY NOVATO, AGRADECERÍA SU COLABORACIÓN Y UNA RÁPIDA RESPUESTA
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

¿Alguien me puede decir por qué no funciona el programa?

Publicado por Kabuto (1381 intervenciones) el 13/10/2018 19:56:33
Las condiciones del for no son correctas:

for (i=a; i==0; i--);

Ahi le estas diciendo que ese bucle de comienzo y se repita MIENTRAS i SEA IGUAL A 0.
Pero cuando inicias el programa, i no vale 0, i tiene el valor que tenga a, es decir, lo que haya introducido el usuario por teclado.
Por tanto, ese bucle for JAMAS llega a iniciarse.

Piensa mejor cual es la condicion que HA DE CUMPLIRSE para que el bucle de comienzo y siga iterándose.
Probablemente te vaya mejor algo como
for (i=a; i>0; i--); <--- MIENTRAS i SEA MAYOR QUE 0 (se detiene cuando i == 0)

O tal vez:
for (i=a; i>=0; i--); <--- MIENTRAS i SEA MAYOR o IGUAL QUE 0 (se detiene cuando i < 0, por ejemplo cuando i vale -1 )


Al segundo programa le ocurre lo mismo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

K

Publicado por Chai (14 intervenciones) el 13/10/2018 19:59:15
Sí, es verdad, me di cuenta poco después de colgar la pregunta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar