Foro sobre Java SE > Ejercicio de java. Conseguir numeros pares
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()));
}
}
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()));
}
}
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,
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.
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.
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
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()));
}
}
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.
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 + " ");
}
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.
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.
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);
}
}
}
}