Java - Ayudaa con numeros perfectos

 
Vista:
sin imagen de perfil

Ayudaa con numeros perfectos

Publicado por pedro (3 intervenciones) el 24/02/2022 09:10:32
buenas noches soy estudiante de primer año de sistemas y tengo una duda tengo que sacar los divisores de los primeros 4 numeros reales pero el codigo me da numeros de mas como hago para controlar el flujo de datos

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
public static void main(String[] args) {
 
 
            int num1 = 6;
            int num2 = 28;
            int num3 = 496;
            int num4 = 8128;
 
            int resul;
            int suma = 0;
            System.out.println("selecciona un numero " + " 6   28   496   8128");
 
            Scanner real = new Scanner(System.in);
            int num = real.nextInt();
 
            switch(num)
            {
 
                case 6:
                    for(int i = 2; i <= num1;i++)
                    { resul = num1%i;
                     if(resul == 0)
                       resul = suma + i;
                        System.out.println(resul);
                    }
                        break;
                case 28:
                    for(int i = 1; i <= num2;i++)
                    { resul = num2%i;
                    if(resul == 0)
                        suma = suma+i;
 
                        System.out.println(resul);
                    }
                        break;
                case 496:
                    for(int i = 1; i <= num3;i++)
                    { resul = num3%i;
                    if(resul == 0)
                        suma = suma+i;
 
                        System.out.println(resul);
                    }
                        break;
                case 8128:
                    for(int i = 1; i <= num4;i++)
                    { resul = num3%i;
                    if(resul == 0)
                        suma = suma+i;
 
                        System.out.println(resul);
                    }
                        break;
 
 
 
 
 
                    }
    }
 
    }
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 Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayudaa con numeros perfectos

Publicado por Billy Joel (876 intervenciones) el 24/02/2022 17:26:40
Supongo que objetivo será sacar una lista de divisores. Entonces tu variable suma debería ser String. Yo no le pondría suma, le llamaría divisores ya que los nombres de las variables deberían representar el proposito que cumplen para mejor comprensión.

Tu switch está bonito pero si lo analizas lo que sucede dentro se repite, digo tu código funciona, solo te hizo falta añadir la opción default.

Tu código lo corrijo así
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
public static void main(String[] args) {
    int num1 = 6;
    int num2 = 28;
    int num3 = 496;
    int num4 = 8128;
    String divisores = "";
    System.out.print("selecciona un numero de estos >> 6   28   496   8128: ");
    Scanner real = new Scanner(System.in);
    int num = real.nextInt();
    switch (num) {
        case 6:
            for (int i = 2; i <= num1; i++) {
                if (num1 % i == 0) {
                    divisores += divisores.isEmpty() ? i : ", " + i;
                }
            }
            System.out.println(divisores);
            break;
        case 28:
            for (int i = 1; i <= num2; i++) {
                if (num2 % i == 0) {
                    divisores += divisores.isEmpty() ? i : ", " + i;
                }
            }
            System.out.println(divisores);
            break;
        case 496:
            for (int i = 1; i <= num3; i++) {
                if (num3 % i == 0) {
                    divisores += divisores.isEmpty() ? i : ", " + i;
                }
            }
            System.out.println(divisores);
            break;
        case 8128:
            for (int i = 1; i <= num4; i++) {
                if (num4 % i == 0) {
                    divisores += divisores.isEmpty() ? i : ", " + i;
                }
            }
            System.out.println(divisores);
            break;
        default:
            System.out.println("Numero incorrecto");
            break;
    }
}

Te voy a mostrar otro enfoque... Mi versión
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public static void main(String[] args) {
    int[] opciones = {6, 28, 496, 8128};
    Scanner sc = new Scanner(System.in);
    System.out.print("selecciona un numero de estos >> 6   28   496   8128: ");
    int num = sc.nextInt();
    boolean isInOpciones = false;
    for (int o : opciones) {
        if (o == num) {
            isInOpciones = true;
            break;
        }
    }
    if (isInOpciones) {
        String divisores = "";
        for (int i = 1; i <= num; i++) {
            if (num % i == 0) {
                divisores += divisores.isEmpty() ? i : ", " + i;
            }
        }
        System.out.println(divisores);
    } else {
        System.out.println("Numero incorrecto");
    }
}

Saludos,
Billy Joel
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
sin imagen de perfil

Ayudaa con numeros perfectos

Publicado por pedro (3 intervenciones) el 24/02/2022 22:18:09
muchas gracias ya me salio tenia el error de no poner las llaves en if y poreso el ciclo me daba numeros de mas muchas gracias
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