Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Ejercicio de java. Conseguir numeros pares

Hola a todos,

Estoy parado un ejercicio de java que creo que parece simple pero no consiguo dar la solucion.

Tengo que conseguir que de un multiplo dado por teclado, y con una sentencia for me de solo
los numeros pares.

y me los enseñe en una lista:

0,10,20,30,... y colocar una fecha.

y luego me sume esos mismos numeros.

Yo tengo hecho parte del codigo pero como digo no me sale el calculo.

public static int VALOR_MAX=100;
public static void main(String[] args) {
//Se incian las variables
@SuppressWarnings("resource")
Scanner lector = new Scanner(System.in);
//Damos el formateo a la fecha y creamos sus variables
SimpleDateFormat formateador = new SimpleDateFormat(
"dd 'de' MMMM 'de' yyyy", new Locale("es_ES"));
Date fechaDate = new Date();
String fecha = formateador.format(fechaDate);
int resultado = 0;
int resto = 0;
//Se solicitan valores para obterner los multiplos
System.out.print("Indica de que numeros quieres encontrar los multiplos: ");
int multiplo = lector.nextInt();
lector.nextLine();

//Analiza los valores uno por uno, de 0 a 100
for (int i=0;i<VALOR_MAX;i++) {
System.out.println("Añadimos valor de i "+ i + "...");//5
i = i + multiplo;//5=5+5 = 10
resultado=resultado+i;//resultado=resultado+11= 22{

if (resto%resultado==0){
resultado=i*2;
//Cuando lleguemos al VALOR_MAX finaliza el bloque y nos da el resultado
System.out.println ("El resultado final de sumar todos los valores multiplos de "+
multiplo + " es "+ resultado + ".\n");
//Imprime la fecha al final.
System.out.println(fecha);
}
}
}
}

octubre 26, 2013 | Registered Commenterjoserodriguezan

Tengo una duda sobre ese límite de 100.
¿Es el número máximo de resultados que se deben buscar, o es el número máximo de múltiplos del número dado?
En el código que sigue, se supone que es el máximo de resultados.

public class Test {

public static final int VALOR_MAX = 100;

public static void main(String[] args) {

final Scanner lector = new Scanner(System.in);
//Se solicitan valores para obterner los multiplos
System.out.print("Indica de que numero quieres encontrar los multiplos: ");
int numero = lector.nextInt();
lector.nextLine();

//Analiza los valores uno por uno, de 0 a 100
int resultado = 0;
for (int i = numero + 1; i < VALOR_MAX; i++) {
if (i % numero == 0 && i % 2 == 0) {
resultado += i;
}
}

//Cuando lleguemos al VALOR_MAX finaliza el bloque y nos da el resultado
System.out.println("El resultado final de sumar todos los valores multiplos de " + numero + " es " + resultado + ".\n");
//Imprime la fecha al final.
System.out.println(new SimpleDateFormat("dd 'de' MMMM 'de' yyyy").format(new Date()));
}
}

octubre 26, 2013 | Registered Commenterchoces

Si ese límite es el número máximo de múltiplos pares del número introducido.

public class Test {

public static final int VALOR_MAX = 100;

public static void main(String[] args) {

final Scanner lector = new Scanner(System.in);
//Se solicitan valores para obterner los multiplos
System.out.print("Indica de que numero quieres encontrar los multiplos: ");
int numero = lector.nextInt();
lector.nextLine();

//Analiza los valores uno por uno, de 0 a 100
int indice = numero + 1;
// se obtienen los múltiplos pares del número introducido
final List<Integer> multiplos = new ArrayList<>((int) (VALOR_MAX / 0.75));
while (multiplos.size() <= VALOR_MAX) {
if (indice % numero == 0 && indice % 2 == 0) {
multiplos.add(indice);
}
indice++;
}

// suma de todos los múltiplos pares
int resultado = 0;
for (Iterator<Integer> it = multiplos.iterator(); it.hasNext();) {
resultado += it.next();
}

//Cuando lleguemos al VALOR_MAX finaliza el bloque y nos da el resultado
System.out.println("El resultado final de sumar todos los valores multiplos de " + numero + " es " + resultado + ".\n");
//Imprime la fecha al final.
System.out.println(new SimpleDateFormat("dd 'de' MMMM 'de' yyyy").format(new Date()));
}
}

octubre 26, 2013 | Registered Commenterchoces

Hola choces,

realmente digamos que me ha de salir por ejemplo los valores pares de 5 hasta 100.
0,10,20,30,40,50,60,70,80,90 y luego me ha de sumar todos esos valores.

Muchasss gracias,

octubre 26, 2013 | Registered Commenterjoserodriguezan

Entonces lo que te sirve es el primer test.
El segundo encontraría los 100 primeros múltiplos pares, a partir del número introducido.

octubre 26, 2013 | Registered Commenterchoces

Esto es lo que me sale con tu codigo,
----
Indica de que numero quieres encontrar los multiplos: 5
El resultado final de sumar todos los valores multiplos de 5 es 896.

26 de octubre de 2013
-----
Deberia ser
Indica de que numero quieres encontrar los multiplos: 5
0,10,20,30,40,50,60,70,80,90,100
El resultado final de sumar todos los valores multiplos de 5 es 550.

26 de octubre de 2013
-----
Que es lo que no consigo hacer.
Seria com oconseguir todos los numero multiplos de valor escrito hasta el 100
y sumar solo los pares.

Muchas gracias por tu rápida respuesta.

octubre 26, 2013 | Registered Commenterjoserodriguezan

Si ejecutas este Test, tal cual, que es idéntico al primero que publiqué, excepto que este de ahora imprime los números múltiplos pares encontrados, y el valor máximo puede ser igual a 100, no solo menor que 100

public class Test {

public static final int VALOR_MAX = 100;

public static void main(String[] args) {

final Scanner lector = new Scanner(System.in);
//Se solicitan valores para obterner los multiplos
System.out.print("Indica de que numero quieres encontrar los multiplos: ");
int numero = lector.nextInt();
lector.nextLine();

//Analiza los valores uno por uno, de 0 a 100
int resultado = 0;
for (int i = numero + 1; i <= VALOR_MAX; i++) {
if (i % numero == 0 && i % 2 == 0) {
resultado += i;
System.out.print(i + " ");
}
}
System.out.println("");
//Cuando lleguemos al VALOR_MAX finaliza el bloque y nos da el resultado
System.out.println("El resultado final de sumar todos los valores multiplos de " + numero + " es " + resultado + ".\n");
//Imprime la fecha al final.
System.out.println(new SimpleDateFormat("dd 'de' MMMM 'de' yyyy").format(new Date()));
}
}

el resultado por la consola es:

Indica de que numero quieres encontrar los multiplos: 5
10 20 30 40 50 60 70 80 90 100
El resultado final de sumar todos los valores múltiplos de 5 es 550.

26 de octubre de 2013

octubre 26, 2013 | Registered Commenterchoces

Al final lo he conseguido, por supuesto gracias a ti. Es algo diferente pero funciona como quiero.

Muchisimas gracias, seguramente siga poniendo más post. Tengo dos ejercicios más que seguro voy a comerme la cabeza durante un rato más.

package EAC2;
/* Creamos aplicación para sumar y mostrar todos los multiplos del numero
* introducido por el usuario que sólo en cuenta los numeros pares.
*/
import java.util.Scanner;
//Referencias importadas para la fecha
import java.text.SimpleDateFormat;
import java.util.Date;

public class Exer1 {

public static int VALOR_MAX=100;
public static void main(String[] args) {

Scanner lector = new Scanner(System.in);
//Se solicitan valores para obterner los multiplos
System.out.print("Indica de que numero quieres encontrar los multiplos: ");
int numero = lector.nextInt();
lector.nextLine();


//Analiza los valores uno por uno, de 0 a 100
int resultado = 0;
for (int i = 0; i<= VALOR_MAX; i++) {

/* Caso que el residuo sea igual del numero o de 2 sea igual a 0
* Imprimimos los numeros pares y lo añadimos a la variable resultado
*/
if (i % numero == 0 && i % 2 == 0) {

System.out.println("Añadimos valor de i "+ i + "...");
resultado += i;
}
}

//Cuando lleguemos al VALOR_MAX finaliza el bloque y nos imprime el numero multiplicador y la suma de la todos mutiplos pares.
System.out.println("El resultado final de sumar todos los valores multiplos de " + numero + " es " + resultado + ".\n");
//Imprime la fecha al final.
System.out.println(new SimpleDateFormat("dd 'de' MMMM 'de' yyyy").format(new Date()));
}
}

octubre 26, 2013 | Registered Commenterjoserodriguezan

En realidad, para hacerlo más eficiente, el valor inicial del índice i debería empezar por numero * 2

for (int i = numero*2; i<= VALOR_MAX; i++) {

porque no puede haber múltiplos de un número iguales o inferiores a sí mismo, y el primer múltiplo par es igual al mismo número multiplicado por 2

En mis Test el índice comienza en numero + 1, para cumplir la primera condición, pero no es lo más eficiente.

octubre 26, 2013 | Registered Commenterchoces

Todavía más eficiente el bucle principal:

int resultado = 0;
final int primerPar = numero * 2;
for (int i = primerPar; i <= VALOR_MAX; i += primerPar) {
resultado += i;
System.out.print(i + " ");
}

octubre 26, 2013 | Registered Commenterchoces

Muchas gracias choces.

Me has sido de gran ayuda.

Como estoy empezando en la programacion en java, me temo que tendre que utilizar muchisimo este foro debido a la ayuda inmediata que me has prestado.

Muchas gracias de nuevo.

octubre 27, 2013 | Registered Commenterjoserodriguezan

Planteando las cuestiones como tu lo haces: con código ejecutable, y mostrando claramente el problema o la dificultad, es fácil prestarte la ayuda que necesitas.
¡Así es como debería hacerlo todo el mundo!.

De nada, es un placer.

octubre 27, 2013 | Registered Commenterchoces