lunes, 11 de julio de 2011

Suma de pares en un rango determinado

Hace un tiempo estaba siguiendo los ejercicios propuestos de un libro de Java, aunque igual este problema no tiene un nivel de dificultad considerable, me pareció curioso aplicar un método leerNumero que se encargara del tratamiento de datos.

De la misma forma que se puede construir este metodo, se pueden contruir otros que devuelvan cadenas formateadas, para obtener doubles, float, etc. Bueno no siendo mas aqui está el code ;).



/***
* @Nombre : SumaPares.java
* @Descripción : A partir de dos numeros ingresados por teclado, calcula la
* suma de todos los numeros pares existentes en el rango de los numeros ingresados
*
* @Autor : [D-m-K]
***/


//importo librerias necesarias
import java.io.*;

public class SumaPares {
public static void main(String[] args) throws IOException{

//Declaracion de las variables
int a, b, mayor, menor, suma = 0;

System.out.println("\n\tPor favor ingresa dos numeros para calcular la suma de los pares : \n");
a = leerNumero("\tNumero a : ");
b = leerNumero("\tNumero b : ");

//Evaluo cual es mayor
if(a > b)
{
mayor = a;
menor = b;
}else{
mayor = b;
menor = a;
}

//Calculo el rango.
for (int i=menor; i<=mayor;i++){
if(i%2 == 0)
suma+=i;
}

//Muestro el resultado
System.out.println("\n\tLa suma de los pares entre " + menor + " y " + mayor + " : " + suma);

}


/**
* Metodo que recibe un mensaje para mostrar al usuario, lee un valor
* ingresado por teclado y devuelve un numero.
* @param msg
* @return
* @throws IOException
*/

static int leerNumero(String msg) throws IOException{
//Numero leido
int num = 0;
//Para evaluar si hay un error
boolean error;
//Objeto para lectura de datos utilizando como entrada el teclado
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

do{
error = false;
//Tratamiento del error
try{
System.out.print(msg);
num = Integer.parseInt(in.readLine());
}catch(NumberFormatException e){
System.out.println("\n\tEl Valor ingresado no es numerico :S");
error = true;
}
}while(error);
//Devuelve el numero leido
return num;
}
}


Salu2

No hay comentarios:

Publicar un comentario