Vous êtes sur la page 1sur 48

Ejercicios Bsicos con Estructura Secuencial

Ejercicios Bsicos Resueltos con estructura secuencial

1. Programa Java que lea dos nmeros enteros por teclado y los muestre por pantalla.

import java.util.*;

public class Main {

public static void main(String[] args){

//declaracin de variables

int n1, n2;

Scanner sc = new Scanner(System.in);

//leer el primer nmero

System.out.println("Introduce un nmero entero: ");

n1 = sc.nextInt(); //lee un entero por teclado

//leer el segundo nmero

System.out.println("Introduce otro nmero entero: ");

n2 = sc.nextInt(); //lee un entero por teclado

//mostrar resultado

System.out.println("Ha introducido los nmeros: " + n1 + " y " + n2);

Programa que lea una cantidad de grados centgrados y la pase a grados Fahrenheit.

La frmula correspondiente para pasar de grados centgrados a fahrenheit es:

F = 32 + ( 9 * C / 5)

import java.util.*;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

double gradosC, gradosF;

System.out.println("Introduce grados Centgrados:");

gradosC = sc.nextDouble();

gradosF = 32 + (9 * gradosC / 5);

System.out.println(gradosC +" C = " + gradosF + " F");


}

Ejercicio 5. Programa que lee por teclado el valor del radio de una circunferencia y calcula y muestra por
pantalla la longitud y el rea de la circunferencia.

Longitud de la circunferencia = 2*PI*Radio, Area de la circunferencia = PI*Radio^2

import java.util.*;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

double radio, longitud, area;

System.out.println("Introduce radio de la circunferencia:");

radio = sc.nextDouble();

longitud = 2 * Math.PI * radio;

area = Math.PI * Math.pow(radio, 2);

System.out.println("Longitud de la circunferencia -> " + longitud);

System.out.println("Area de la circunferencia -> " + area);

Ejercicio 6. Programa que pase una velocidad en Km/h a m/s. La velocidad se lee por teclado.

import java.util.*;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

double velocidad;

System.out.println("Introduzca velocidad en Km/h: ");

velocidad = sc.nextDouble();

System.out.println(velocidad + " Km/h -> " + velocidad*1000/3600 + " m/s");


}

Ejercicio 7. Programa lea la longitud de los catetos de un tringulo rectngulo y calcule la longitud de la
hipotenusa segn el teorema de Pitgoras.

import java.util.*;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

double cateto1, cateto2;

System.out.print("Introduzca longitud del primer cateto: ");

cateto1 = sc.nextDouble();

System.out.print("Introduzca longitud del segundo cateto: ");

cateto2 = sc.nextDouble();

System.out.println("Hipotenusa -> " + Math.sqrt(Math.pow(cateto1,2)+ Math.pow(cateto2, 2)));

Ejercicio 8:

Programa que tome como dato de entrada un nmero que corresponde a la longitud del radio una
esfera y nos calcula y escribe el volumen de la esfera que se corresponden con dicho radio.

La frmula para calcular el volumen de la esfera es

v = (4/3)*PI*r^3

/*

* Programa que calcula el volumen de una esfera

*/

import java.util.*;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

double radio, volumen;


System.out.print("Introduzca radio de la esfera: ");

radio = sc.nextDouble();

System.out.println("Volumen de la esfera de radio " + radio + " = "

+ (4.0/3)* Math.PI * Math.pow(radio, 3));

Programa Java que calcule el rea de un tringulo en funcin de las longitudes de sus lados (a, b, c),
segn la siguiente frmula:

Area = RaizCuadrada(p*(p-a)*(p-b)*(p-c))

donde p = (a+b+c)/2

Para calcular la raz cuadrada se utiliza el mtodo Math.sqrt()

/*

* Programa que calcule el rea de un tringulo en funcin de las longitudes de sus lados (a, b, c)

* segn la siguiente frmula: area=raiz2(p(p-a)(p-b)(p-c)) donde p = (a+b+c)/2

*/

import java.util.*;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

double a,b,c,p;

System.out.print("Introduzca longitud del primer lado del tringulo: ");

a = sc.nextDouble();

System.out.print("Introduzca longitud del segundo lado del tringulo: ");

b = sc.nextDouble();

System.out.print("Introduzca longitud del tercer lado del tringulo: ");

c = sc.nextDouble();

p = (a+b+c)/2;

System.out.println("Area -> " + Math.sqrt(p*(p-a)*(p-b)*(p-c)));

}
Programa Java que lea un nmero entero de 3 cifras y muestre por separado las cifras del nmero.

/*

* Programa que lea un nmero de 3 cifras y muestre por pantalla las cifras del nmero

*/

import java.util.*;

public class Main{

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int N;

System.out.print("Introduzca valor de N: ");

N = sc.nextInt(); //supondremos que el nmero introducido tiene 3 cifras

System.out.println("Primera cifra de " + N + " -> " + (N/100));

System.out.println("Cifra central de " + N + " -> " + (N/10)%10);

System.out.println("ltima cifra de " + N + " -> " + (N%10));

Recuerda que la divisin entre enteros da como resultado la parte entera de la divisin (sin decimales).
Si por ejemplo N = 123 la operacin N/10 da como resultado 12 y no 12.3

Recuerda que el operador % obtiene el resto de la divisin.

Programa que lea un nmero entero N de 5 cifras y muestre sus cifras igual que en el ejemplo.

Por ejemplo para un nmero N = 12345 La salida debe ser:

12

123

1234

12345

/*

* N = 12345 La salida debe ser:

*1

* 12
* 123

* 1234

* 12345

*/

import java.util.*;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int N;

System.out.print("Introduzca valor de N: ");

N = sc.nextInt(); //supondremos que el nmero introducido tiene 5 cifras

System.out.println(N/10000);

System.out.println(N/1000);

System.out.println(N/100);

System.out.println(N/10);

System.out.println(N);

Programa Java que lea un nmero entero N de 5 cifras y muestre sus cifras igual que en el ejemplo.

Por ejemplo para un nmero N = 12345 La salida debe ser:

45

345

2345

12345

/*

* N = 12345 La salida debe ser:

*5

* 45
* 345

* 2345

* 12345

*/

import java.util.*;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int N;

System.out.print("Introduzca valor de N: ");

N = sc.nextInt(); //supondremos que el nmero introducido tiene 5 cifras

System.out.println(N%10);

System.out.printf("%02d %n",N%100);

System.out.printf("%03d %n",N%1000);

System.out.printf("%04d %n",N%10000);

System.out.printf("%05d %n",N);

Programa que pida por teclado la fecha de nacimiento de una persona (dia, mes, ao) y calcule su
nmero de la suerte.

El nmero de la suerte se calcula sumando el da, mes y ao de la fecha de nacimiento y a continuacin


sumando las cifras obtenidas en la suma.

Por ejemplo:

Si la fecha de nacimiento es 12/07/1980

Calculamos el nmero de la suerte as: 12+7+1980 = 1999 1+9+9+9 = 28

Nmero de la suerte: 28

/*

* Programa que calcula el nmero de la suerte

*/

import java.util.*;
public class Secuenciales2_13 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int dia, mes, ao, suerte, suma, cifra1, cifra2, cifra3, cifra4;

System.out.println("Introduzca fecha de nacimiento");

System.out.print("da: ");

dia = sc.nextInt();

System.out.print("mes: ");

mes = sc.nextInt();

System.out.print("ao: ");

ao = sc.nextInt();

suma = dia + mes + ao;

cifra1 = suma/1000; //obtiene la primera cifra

cifra2 = suma/100%10; //obtiene la segunda cifra

cifra3 = suma/10%10; //obtiene la tercera cifra

cifra4 = suma%10; //obtiene la ltima cifra

suerte = cifra1 + cifra2 + cifra3 + cifra4;

System.out.println("Su nmero de la suerte es: " + suerte);

Ejercicios Bsicos con Estructura Condicional

1. Programa Java que lea un nmero entero por teclado y calcule si es par o impar.

Podemos saber si un nmero es par si el resto de dividir el nmero entre 2 es igual a cero. En caso
contrario el nmero es impar

El operador Java que calcula el resto de la divisin entre dos nmeros enteros o no es el operador %

El programa que calcula si un nmero entero es par o impar es el siguiente:

import java.util.*;

public class Condicional1_1 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int N;
System.out.print("Introduzca Nmero entero: ");

N = sc.nextInt();

if(N%2==0)

System.out.println("Par");

else

System.out.println("Impar");

2. Programa que lea un nmero entero y muestre si el nmero es mltiplo de 10.

Podemos comprobar si un nmero entero es mltiplo de 10 si al dividirlo por 10 es resto de esta divisin
es cero.

/* Programa que lea un nmero entero y muestre si el nmero es mltiplo de 10 */

import java.util.*;

public class Condicional1_2 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int N;

System.out.print("Nmero entero: ");

N = sc.nextInt();

if(N%10==0)

System.out.println("Es mltiplo de 10");

else

System.out.println("No es mltiplo de 10");

3. Programa que lea un carcter por teclado y compruebe si es una letra mayscula

/* condicional1_3

* Programa que lea un carcter por teclado y compruebe si es una letra mayscula

*/

import java.io.*;

import java.util.*;
public class condicional1_3 {

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

Scanner sc = new Scanner(System.in);

char car, car1;

System.out.print("Introduzca un carcter: ");

car = (char)System.in.read(); //lee un solo caracter

if(Character.isUpperCase(car)) //utilizamos el mtodo isUpperCase de la clase Character

System.out.println("Es una letra mayscula");

else

System.out.println("No es una letra mayscula");

Forma alternativa de comprobar si un carcter es una letra mayscula sin utilizar el mtodo
isUpperCase, en este caso comparando directamente con los caracteres A y Z

if(car>='A' && car <='Z')

System.out.println("Es una letra mayscula");

else

System.out.println("No es una letra mayscula");

Ejercicio 4: Programa que lea dos caracteres y compruebe si son iguales.

/*

* Ejemplo bsico java

* Programa con estructura condicional

* Programa que lea dos caracteres y compruebe

* si son iguales.

*/

import java.io.*;

public class condicional1_5 {

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

char car1, car2;


System.out.print("Introduzca primer carcter: ");

car1 = (char)System.in.read(); //lee un carcter

System.in.read(); //saltar el intro que ha quedado en el buffer

System.out.print("Introduzca segundo carcter: ");

car2 = (char)System.in.read(); //lee el segundo carcter

if(car1 == car2)

System.out.println("Son iguales");

else

System.out.println("No son iguales");

Una forma alternativa de hacer este programa es creando dos objetos Character a partir de los
caracteres que se han ledo y compararlos utilizando el mtodo equals

import java.io.*;

public class condicional1_5 {

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

char car1, car2;

System.out.print("Introduzca primer carcter: ");

car1 = (char)System.in.read(); //lee un carcter

System.in.read(); //saltar el intro que ha quedado en el buffer

System.out.print("Introduzca segundo carcter: ");

car2 = (char)System.in.read(); //lee el segundo carcter

Character c1 = new Character(car1);

Character c2 = new Character(car2);

if(c1.equals(c2)) //comparamos dos objetos Character mediante el mtodo equals

System.out.println("Son iguales");

else

System.out.println("No son iguales");

}
Ejercicio 5: Programa java que lea dos caracteres por teclado y compruebe si los dos son letras
minsculas

/* Ejemplo bsico java de programa con estructura condicional

* Programa que lea dos caracteres y compruebe si los dos son letras minsculas

*/

import java.io.*;

public class condicional1_6 {

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

char car1, car2;

System.out.println("Introduzca primer carcter: ");

car1 = (char)System.in.read(); //lee un carcter

System.in.read(); //saltar el intro que ha quedado

System.out.println("Introduzca segundo carcter: ");

car2 = (char)System.in.read(); //lee el segundo carcter

if(Character.isLowerCase(car1)){ //utilizamos el mtodo isLowerCase de la clase Character

if(Character.isLowerCase(car2))

System.out.println("Los dos son letras minsculas");

else

System.out.println("El primero es una letra minscula pero el segundo no");

else{

if(Character.isLowerCase(car2))

System.out.println("El segundo es una letra minscula pero el primero no");

else

System.out.println("Ninguno es una letra minscula");

}
Una forma alternativa de resolver este ejercicio es comparando directamente las dos variables con las
letras minsculas

if(car1>='a' && car1<='z'){

if(car2>='a' && car2<='z')

System.out.println("Los dos son letras minsculas");

else

System.out.println("El primero es una letra minscula pero el segundo no");

else{

if(car2>='a' && car2<='z')

System.out.println("El segundo es una letra minscula pero el primero no");

else

System.out.println("Ninguno es una letra minscula");

Ejercicio 6: Programa java que lea un carcter por teclado y compruebe si es un dgito numrico (cifra
entre 0 y 9).

Vamos a escribir dos soluciones a este ejercicio.

La primera consiste en comprobar si el carcter es un dgito mediante el mtodo isDigit de la clase


Character. Este mtodo devuelve true si el carcter que se le pasa como parmetro es una cifra entre 0
y 9:

/*

* Ejemplo de programa con estructura condicional

* Programa que lea un carcter por teclado y compruebe si es un nmero

*/

import java.io.*;

public class condicional1_7 {

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

char car1;

System.out.print("Introduzca carcter: ");

car1 = (char)System.in.read(); //lee un carcter

if(Character.isDigit(car1)) //utilizamos el mtodo isDigit de la clase Character

System.out.println("Es un nmero");
else

System.out.println("No es un nmero");

el carcter 9.

// Versin alternativa comparando con

// los caracteres '0' ... '9'

if(car1>='0' && car1<='9')

System.out.println("Es un nmero");

else

System.out.println("No es un nmero")

Ejercicio 7: Programa que lea dos nmeros por teclado y muestre el resultado de la divisin del primer
nmero por el segundo. Se debe comprobar que el divisor no puede ser cero.

/*

* Ejemplo de programa con estructura condicional

* Programa que lea dos nmeros por teclado y muestre el resultado

* de la divisin del primero por el segundo.

* Se comprueba que el divisor es distinto de cero.

*/

import java.util.*;

public class condicional1_8 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

double dividendo, divisor;

System.out.print("Introduzca el dividendo: ");

dividendo = sc.nextDouble();

System.out.print("Introduzca el divisor: ");

divisor = sc.nextDouble();

if(divisor==0)

System.out.println("No se puede dividir por cero");

else{
System.out.println(dividendo + " / " + divisor + " = " + dividendo/divisor);

System.out.printf("%.2f / %.2f = %.2f %n" , dividendo, divisor , dividendo/divisor);

Calcular el mayor de tres nmeros enteros en Java.

El programa lee por teclado tres nmeros enteros y calcula y muestra el mayor de los tres.

/*

* Programa que lee tres nmeros distintos

* y nos dice cul de ellos es el mayor

*/

import java.util.*;

public class MayorDeTres {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int n1, n2, n3;

System.out.print("Introduzca primer nmero: ");

n1 = sc.nextInt();

System.out.print("Introduzca segundo nmero: ");

n2 = sc.nextInt();

System.out.print("Introduzca tercer nmero: ");

n3 = sc.nextInt();

if(n1 > n2)

if(n1>n3)

System.out.println("El mayor es: " + n1);

else

System.out.println("el mayor es: " + n3);

else if(n2>n3)

System.out.println("el mayor es: " + n2);

else
System.out.println("el mayor es: " + n3);

Ejercicio 9:

Programa que lea por teclado tres nmeros enteros H, M, S correspondientes a hora, minutos y
segundos respectivamente, y comprueba si la hora que indican es una hora vlida.

Supondremos que se leemos una hora en modo 24 Horas, es decir, el valor vlido para las horas ser
mayor o igual que cero y menor que 24.

El valor vlido para los minutos y segundos estar comprendido entre 0 y 59 ambos incluidos

/*

* Programa java que lea tres nmeros enteros H, M, S que contienen hora, minutos y

* segundos respectivamente, y comprueba si la hora que indican es una hora vlida.

*/

import java.util.*;

public class condicional1_16 {

public static void main(String[] args) {

int H,M,S;

Scanner sc = new Scanner(System.in);

System.out.print("Introduzca hora: ");

H = sc.nextInt();

System.out.print("Introduzca minutos: ");

M = sc.nextInt();

System.out.print("Introduzca segundos: ");

S = sc.nextInt();

if(H>=0 && H<24 && M>=0 && M<60 && S>=0 && S<60)

System.out.println("Hora correcta");

else

System.out.println("Hora incorrecta");

La instruccin que comprueba si la hora leda por teclado es correcta es:


if(H>=0 && H<24 && M>=0 && M<60 && S>=0 && S<60)

Esta condicin da como resultado true cuando la hora es mayor o igual a 0 y menor que 24, los minutos
son mayores o iguales a 0 y menores que 60 y los segundos son mayores 0 iguales a cero y menores a
60.

Ejercicio 10:

Programa que lea una variable entera mes y compruebe si el valor corresponde a un mes de 30 das, de
31 o de 28. Supondremos que febrero tiene 28 das. Se mostrar adems el nombre del mes. Se debe
comprobar que el valor introducido est comprendido entre 1 y 12.

/*

* Programa java que lea una variable entera mes y compruebe si el valor corresponde

* a un mes de 30 das. Se debe comprobar que el valor introducido est

* comprendido entre 1 y 12

*/

import java.util.*;

public class condicional1_17 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int mes;

System.out.print("Introduzca nmero de mes: ");

mes = sc.nextInt();

if(mes < 1 || mes > 12) //se comprueba que el valor del mes es correcto

System.out.println("Mes incorrecto");

else{ //si el mes es correcto

switch(mes){ //se muestra el nombre mediante una instruccin switch

case 1: System.out.print("Enero");

break;

case 2: System.out.print("Febrero");

break;

case 3: System.out.print("Marzo");

break;

case 4: System.out.print("Abril");
break;

case 5: System.out.print("Mayo");

break;

case 6: System.out.print("Junio");

break;

case 7: System.out.print("Julio");

break;

case 8: System.out.print("Agosto");

break;

case 9: System.out.print("Septiembre");

break;

case 10: System.out.print("Octubre");

break;

case 11: System.out.print("Noviembre");

break;

case 12: System.out.print("Diciembre");

break;

// mostrar si es un mes de 30, 31 0 28 das

if(mes == 4 || mes == 6 || mes == 9 || mes == 11)

System.out.println(" es un mes de 30 das");

else if(mes == 2)

System.out.println(" es un mes de 28 das");

else

System.out.println(" es un mes de 31 das");

}
Ejercicios Bsicos con Estructura Iterativa o Repetitiva

Relacin N 1: Ejercicios 1, 2, 3, 4, 5 y 6

Ejercicios bsicos que utilizan la estructura repetitiva.

Se trata de mostrar los nmeros desde el 1 hasta el 100 utilizando las instrucciones repetitivas while, do
while y for.

1. Ejemplo de uso de while: Programa Java que muestre los nmeros del 1 al 100 utilizando la
instruccin while.

/*

* Ejercicios bsicos java con estructura iterativa o repetitiva

* Mostrar los nmeros del 1 al 100

* utilizando un bucle while

*/

public class Main {

public static void main(String[] args) {

System.out.println("Numeros del 1 al 100: ");

int i=1;

while(i<=100) {

System.out.println(i);

i++;

2. Ejemplo de uso de do-while. Programa Java que muestre los nmeros del 1 al 100 utilizando la
instruccin do..while.

/*

* Ejercicios bsicos java con estructura iterativa o repetitiva

* Mostrar los nmeros del 1 al 100 utilizando un bucle do while

*/

public class Main {

public static void main(String[] args) {

int i = 1;

System.out.println("Numeros del 1 al 100: ");


do{

System.out.println(i);

i++;

}while(i<=100);

3. Ejemplo de uso de for. Programa Java que muestre los nmeros del 1 al 100 utilizando la instruccin
for.

/*

* Ejercicios bsicos java con estructura iterativa o repetitiva

* Mostrar los nmeros del 1 al 100 utilizando un bucle for

*/

public class Repetitiva1_3 {

public static void main(String[] args) {

System.out.println("Numeros del 1 al 100: ");

for(int i = 1; i<=100;i++)

System.out.println(i);

4. Ejemplo de uso de while. Programa Java que muestre los nmeros del 100 al 1 utilizando la
instruccin while.

/*

* Ejercicios bsicos java con estructura iterativa o repetitiva

* Mostrar los nmeros del 100 al 1 utilizando un bucle while

*/

public class Main {

public static void main(String[] args) {

System.out.println("Numeros del 100 al 1: ");

int i=100;

while(i>=1)

{
System.out.println(i);

i--;

5. Ejemplo de uso de do-while. Programa Java que muestre los nmeros del 100 al 1 utilizando la
instruccin do..while.

/*

* Ejercicios bsicos java con estructura iterativa o repetitiva

* Mostrar los nmeros del 100 al 1 utilizando un bucle do while

*/

public class Main {

public static void main(String[] args) {

int i = 100;

System.out.println("Numeros del 100 al 1: ");

do{

System.out.println(i);

i--;

}while(i>=1);

6. Ejemplo de for. Programa Java que muestre los nmeros del 100 al 1 utilizando la instruccin for.

/*

* Ejercicios bsicos java con estructura iterativa o repetitiva

* Mostrar los nmeros del 100 al 1 utilizando un bucle for

*/

public class Repetitiva1_6 {

public static void main(String[] args) {

System.out.println("Numeros del 100 al 1: ");

for(int i=100;i>=1;i--)

System.out.println(i);
}

Ejercicios Generales

En esta entrada vamos a explicar dos mtodos para realizar el intercambio de valores entre dos
variables.

El primer mtodo de intercambio utiliza una variable auxiliar y el segundo mtodo realiza el intercambio
de valores sin utilizar variable auxiliar.

Intercambio de valores entre dos variables utilizando una variable auxiliar.

Programa para intercambiar el valor de dos variables. Los valores iniciales se leen por teclado.

Por ejemplo, suponiendo que las variables se llaman A y B, si A contiene 3 y B contiene 5, despus del
intercambio A contendr 5 y B 3.

En este ejemplo, para intercambiar el valor entre dos variables utilizaremos una avariable auxiliar donde
guardar el valor de una de ellas. Despus veremos la forma de hacerlo sin usar una variable auxiliar para
el intercambio.

Las instrucciones a realizar son:

AUX = A;

A = B;

B = AUX;

Programa completo:

/*

* Programa que lea dos variables

* numricas A y B e

* intercambie sus contenidos.

*/

import java.util.*;

public class Secuenciales2_5 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int A, B, AUX;

System.out.print("Introduzca valor de A: ");

A = sc.nextInt();

System.out.print("Introduzca Valor de B: ");


B = sc.nextInt();

System.out.println("Valores iniciales: A = " + A + " B = " + B);

//instrucciones para hacer el intercambio

//se utiliza una variable auxiliar

AUX = A;

A = B;

B = AUX;

System.out.println("Valores intercambiados: A = " + A + " B = " + B);

Intercambio de valores entre dos variables sin utilizar variable auxiliar.

Tambin se puede intercambiar el valor de dos variables sin utilizar una variable auxiliar.

En ese caso se resuelve utilizando aritmtica bsica:

A = A + B;

B = A - B;

A = A - B;

Si por ejemplo A = 5 y B = 3

A=5+3=8

B=8-3=5

A=8-5=3

Programa completo:

/*

* Programa que intercambie dos variables sin auxiliar

*/

import java.util.*;

public class Secuenciales2_5 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int A, B, AUX;
System.out.print("Introduzca valor de A: ");

A = sc.nextInt();

System.out.print("Introduzca Valor de B: ");

B = sc.nextInt();

System.out.println("Valores iniciales: A = " + A + " B = " + B);

//instrucciones para hacer el intercambio

//sin utilizar una variable auxiliar

A = A + B;

B = A - B;

A = A - B;

System.out.println("Valores intercambiados: A = " + A + " B = " + B);

Decimal a binario en java

/**

* Programa que pasa un nmero

* de decimal a binario

* @author Enrique Garca

*/

public class Main{

public static void main(String[] args) {

int numero, exp, digito;

double binario;

Scanner sc = new Scanner(System.in);

do{

System.out.print("Introduce un numero entero >= 0: ");

numero = sc.nextInt();

}while(numero<0);

exp=0;

binario=0;
while(numero!=0){

digito = numero % 2;

binario = binario + digito * Math.pow(10, exp);

exp++;

numero = numero/2;

System.out.printf("Binario: %.0f %n", binario);

Pasar un nmero de binario a decimal en Java

/*

* Programa Java que convierte un nmero binario a decimal

*/

import java.util.Scanner;

public class BinarioDecimal {

public static void main(String[] args) {

long numero, aux, digito, decimal;

int exponente;

boolean esBinario;

Scanner sc = new Scanner(System.in);

//Leer un nmero por teclado y comprobar que es binario

do {

System.out.print("Introduce un numero binario: ");

numero = sc.nextLong();

//comprobamos que sea un nmero binario es decir

//que este formado solo por ceros y unos

esBinario = true;
aux = numero;

while (aux != 0) {

digito = aux % 10; //ltima cifra del nmeros

if (digito != 0 && digito != 1) { //si no es 0 1

esBinario = false; //no es un nmero binario

aux = aux / 10; //quitamos la ltima cifra para repetir el proceso

} while (!esBinario); //se vuelve a pedir si no es binario

//proceso para pasar de binario a decimal

exponente = 0;

decimal = 0; //ser el equivalente en base decimal

while (numero != 0) {

//se toma la ltima cifra

digito = numero % 10;

//se multiplica por la potencia de 2 correspondiente y se suma al nmero

decimal = decimal + digito * (int) Math.pow(2, exponente);

//se aumenta el exponente

exponente++;

//se quita la ltima cifra para repetir el proceso

numero = numero / 10;

System.out.println("Decimal: " + decimal);

}
Convertir a nmeros romanos en Java

//Programa Java que lee un nmero y lo convierte a nmeros romanos

import java.util.Scanner;

public class NumerosRomanos {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int N;

do {

System.out.print("Introduce un nmero entre 1 y 3999: ");

N = sc.nextInt();

} while (N < 1 || N > 3999);

System.out.println(N + " en numeros romanos -> " + convertirANumerosRomanos(N));

//mtodo para pasar a nmeros romanos

public static String convertirANumerosRomanos(int numero) {

int i, miles, centenas, decenas, unidades;

String romano = "";

//obtenemos cada cifra del nmero

miles = numero / 1000;

centenas = numero / 100 % 10;

decenas = numero / 10 % 10;

unidades = numero % 10;

//millar

for (i = 1; i <= miles; i++) {

romano = romano + "M";

//centenas

if (centenas == 9) {

romano = romano + "CM";


} else if (centenas >= 5) {

romano = romano + "D";

for (i = 6; i <= centenas; i++) {

romano = romano + "C";

} else if (centenas == 4) {

romano = romano + "CD";

} else {

for (i = 1; i <= centenas; i++) {

romano = romano + "C";

//decenas

if (decenas == 9) {

romano = romano + "XC";

} else if (decenas >= 5) {

romano = romano + "L";

for (i = 6; i <= decenas; i++) {

romano = romano + "X";

} else if (decenas == 4) {

romano = romano + "XL";

} else {

for (i = 1; i <= decenas; i++) {

romano = romano + "X";

//unidades
if (unidades == 9) {

romano = romano + "IX";

} else if (unidades >= 5) {

romano = romano + "V";

for (i = 6; i <= unidades; i++) {

romano = romano + "I";

} else if (unidades == 4) {

romano = romano + "IV";

} else {

for (i = 1; i <= unidades; i++) {

romano = romano + "I";

return romano;

}
Ejercicios con Arrays

1. Calcular la media de una serie de nmeros que se leen por teclado.

Programa Java que lea por teclado 10 nmeros enteros y los guarde en un array. A continuacin calcula
y muestra por separado la media de los valores positivos y la de los valores negativos.

/*

* Programa que lea por teclado 10 nmeros enteros y los guarde en un array.

* A continuacin calcula y muestra la media de los valores positivos y la de los valores negativos.

*/

import java.util.*;

public class Media1 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int i;

int pos = 0, neg = 0; //contadores de los nmeros positivos y negativos

int[] numeros = new int[10]; //array que contendr los nmeros ledos por teclado

double sumaPos = 0, sumaNeg = 0; //acumuladores para las sumas de positivos y negativos

//lectura de datos y llenar el array

System.out.println("Lectura de los elementos del array: ");

for (i = 0; i < 10; i++) {

System.out.print("numeros[" + i + "]= ");

numeros[i]=sc.nextInt();

//recorrer el array para sumar por separado los nmeros positivos

// y los negativos

for (i = 0; i < 10; i++) {

if (numeros[i] > 0){ //sumar positivos

sumaPos += numeros[i];

pos++;

} else if (numeros[i] < 0){ //sumar negativos

sumaNeg += numeros[i];
neg++;

//Calcular y mostrar las medias

if (pos != 0) {

System.out.println("Media de los valores positivos: " + sumaPos / pos);

} else {

System.out.println("No ha introducido numeros positivos");

if (neg != 0) {

System.out.println("Media de los valores negativos: " + sumaNeg / neg);

} else {

System.out.println("No ha introducido numeros negativos");

2. Programa Java que lea 10 nmeros enteros por teclado y los guarde en un array. Calcula y muestra la
media de los nmeros que estn en las posiciones pares del array.

Considera la primera posicin del array (posicin 0) como par.

/*

* Leer 10 nmeros enteros y guardarlos

* en un array. Calcular la media de los

* que estn en las posiciones pares.

*/

import java.util.*;

public class Arrays1_2 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int i;

int[] numeros = new int[10];


double media = 0;

//lectura de datos y llenar el array

System.out.println("Lectura de los elementos del array: ");

for (i = 0; i < 10; i++) {

System.out.print("numeros[" + i + "]= ");

numeros[i] = sc.nextInt();

//Recorrer el array y calcular la media

for (i = 0; i < 10; i++) {

if (i % 2 == 0){ //si la posicin actual es par

media = media + numeros[i]; //se suma el valor de esa posicin

//Calcular y mostrar la media

System.out.println("Media de los valores que se encuentran en posiciones pares: "+ media/5);

3. Programa que lee por teclado la nota de los alumnos de una clase y calcula la nota media del grupo.
Tambin muestra los alumnos con notas superiores a la media. El nmero de alumnos se lee por
teclado.

Este programa utiliza un array de elementos de tipo double que contendr las notas de los alumnos.

El tamao del array ser el nmero de alumnos de la clase, por lo tanto primero se pedir por teclado el
nmero de alumnos y a continuacin se crear el array.

Se realizan 3 recorridos sobre el array, el primero para asignar a cada elemento las notas introducidas
por teclado, el segundo para sumarlas y calcular la media y el tercero para mostrar los alumnos con
notas superiores a la media.

import java.util.*;

public class MediaDeLaClase {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int numAlum, i;

double suma = 0, media;


//Lectura del nmero de alumnos. Debe ser un valor positivo

do {

System.out.print("Nmero de alumnos de la clase: ");

numAlum = sc.nextInt();

} while (numAlum <= 0);

//se crea un array llamado notas de numAlumn elementos de tipo double

double[] notas = new double[numAlum];

// Entrada de datos. Se lee la nota de cada alummo y se guarda

// en cada elemento del array

for (i = 0; i < notas.length; i++) {

System.out.print("Alumno " + (i + 1) + " Nota final: ");

notas[i] = sc.nextDouble();

// Sumar todas las notas

for (i = 0; i < notas.length; i++) {

suma = suma + notas[i];

// Calcular la media

media = suma / notas.length;

// Mostrar la media

System.out.printf("Nota media del curso: %.2f %n", media);

// Mostrar los valores superiores a la media

System.out.println("Listado de notas superiores a la media: ");

for (i = 0; i < notas.length; i++) {

if (notas[i] > media) {

System.out.println("Alumno numero " + (i + 1)+ " Nota final: " + notas[i]);

}
}

4. Programa que crea un array de 20 elementos llamado Pares y guarde los 20 primeros nmeros pares.
Mostrar por pantalla el contenido del array creado.

/*

* Programa que crea un array de 20 elementos

* llamado Pares y guarde los 20 primeros

* nmeros pares.

* Mostrar por pantalla el contenido

* del array creado

*/

import java.util.*;

public class ArrayPares {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int i, cont = 2;

int[] pares = new int[20];

//Llenamos el array con nmeros pares. Utilizamos un contador

//con valor inicial 2 y le sumamos dos en cada iteracin.

for (i = 0; i < pares.length; i++) {

pares[i] = cont;

cont += 2;

//Mostrar el array

for (i = 0; i < pares.length; i++) {

System.out.println(pares[i]);

}
5. Programa Java que guarda en un array 10 nmeros enteros que se leen por teclado. A continuacin se
recorre el array y calcula cuntos nmeros son positivos, cuntos negativos y cuntos ceros.

// Contar el nmero de elementos positivos, negativos y ceros de un array de 10 elementos.

import java.util.*;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int[] numeros = new int[10];

int pos = 0, neg = 0, cero = 0; //contadores

int i;

//Leemos los valores por teclado y los guardamos en el array

System.out.println("Lectura de los elementos del array: ");

for (i = 0; i < numeros.length; i++) {

System.out.print("numeros[" + i + "]= ");

numeros[i] = sc.nextInt();

//se recorre el array para contar positivos, negativos y ceros

for (i = 0; i < numeros.length; i++) {

if (numeros[i] > 0) {

pos++;

} else if (numeros[i] < 0) {

neg++;

} else {

cero++;

//mostrar resultados

System.out.println("Positivos: " + pos);

System.out.println("Negativos: " + neg);


System.out.println("Ceros: " + cero);

6. Programa Java que llene un array con 10 nmeros enteros que se leen por teclado. A continuacin
calcula y muestra la media de los valores positivos y la de los valores negativos del array.

/*

* Leer 10 nmeros enteros y mostrar la media de los valores positivos y la de los valores negativos.

*/

import java.util.*;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int[] numeros = new int[10];

int pos = 0, neg = 0; //contadores para positivos y negativos

int i;

double sumaPos = 0, sumaNeg = 0; //suma de positivos y negativos

//Leemos los valores por teclado y los guardamos en el array

System.out.println("Lectura de los elementos del array: ");

for (i = 0; i < numeros.length; i++) {

System.out.print("numeros[" + i + "]= ");

numeros[i]=sc.nextInt();

//se recorre el array para sumar positivos y negativos

for (i = 0; i < numeros.length; i++) {

if (numeros[i] > 0){ //sumar positivos

sumaPos += numeros[i];
pos++;

} else if (numeros[i] < 0){ //sumar negativos

sumaNeg += numeros[i];

neg++;

//mostrar resultados

if (pos != 0) {

System.out.println("Media de los valores positivos: " + sumaPos / pos);

} else {

System.out.println("No ha introducido nmeros positivos");

if (neg != 0) {

System.out.println("Media de los valores negativos: " + sumaNeg / neg);

} else {

System.out.println("No ha introducido nmeros negativos");

7. Programa Java para leer la altura de N personas y calcular la altura media. Calcular cuntas personas
tienen una altura superior a la media y cuntas tienen una altura inferior a la media. El valor de N se
pide por teclado y debe ser entero positivo.

/*

* Leer la altura de N personas y calcular la altura media

* Mostra cuntos hay superiores a la media.

*/

import java.util.*;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int i, N;
int contMas = 0, contMenos = 0;

double media = 0;

//Leer el nmero de personas

do{

System.out.print("Nmero de personas: ");

N = sc.nextInt();

}while(N<=0);

//Se crea el array de tamao N

double[] alto = new double[N];

//Leer alturas

System.out.println("Lectura de la altura de las personas: ");

for (i = 0; i < N; i++) {

System.out.print("persona " + (i+1) + " = ");

alto[i] = sc.nextDouble();

media = media + alto[i]; //se suma la estatura leda para calcular la media

//Calcular la media

media = media / N;

//recorremos el array para ver cuantos hay ms altos

//que la media y cuantos ms bajos

for (i = 0; i < alto.length; i++) {

if (alto[i] > media){ //si la estatura es mayor que la media

contMas++;

} else if (alto[i] < media){ //si es menor

contMenos++;

//Mostrar resultados

System.out.println("Estatura media: " + media);

System.out.println("Personas con estatura superior a la media: " + contMas);


System.out.println("Personas con estatura inferior a la media: " + contMenos);

ara hacerlo utilizaremos dos arrays:

Un array de String para los nombres de los empleados

Un array de tipo double para los sueldos de cada empleado.

Al mismo tiempo que leemos los datos de los empleados iremos comprobando cul es el que tiene el
mayor sueldo. Para ello tomamos el sueldo del primer empleado que se lee como mayor sueldo y
despus vamos comprobando el resto de sueldos. Cuando encontramos alguno mayor que el mayor
actual este sueldo se convierte en el nuevo mayor.

En general para calcular el mayor de una serie de nmeros tomamos el primero como mayor y despus
comparamos el resto de nmeros.

//programa que muestra el nombre y el sueldo del empleado que ms gana

import java.util.*;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

//creamos los arrays

String[] empleados = new String[20];

double[] sueldos = new double[20];

//variables donde guardar el nombre y sueldo del empleado que ms gana

String nombreMayor;

double mayorSueldo;

int i = 0;

//se lee el primer empleado

System.out.println("Lectura de nombres y sueldos de empleados: ");

System.out.print("Empleado " + (i + 1) + ": ");

empleados[i] = sc.nextLine();

System.out.print("Sueldo: ");

sueldos[i] = sc.nextDouble();

//se toma el primero como mayor

mayorSueldo = sueldos[i];
nombreMayor = empleados[i];

//se leen el resto de empleados

for (i = 1; i < empleados.length; i++) {

sc.nextLine(); //limpiar el buffer

System.out.print("Empleado " + (i + 1) + ": ");

empleados[i] = sc.nextLine();

System.out.print("Sueldo: ");

sueldos[i] = sc.nextDouble();

//se compara el sueldo ledo con el mayor

if (sueldos[i] > mayorSueldo) {

mayorSueldo = sueldos[i];

nombreMayor = empleados[i];

//mostrar resultados

System.out.println("Empleado con mayor sueldo: " + nombreMayor );

System.out.println("Sueldo: " + mayorSueldo);

En esta entrada vamos a escribir un mtodo Java que llene un array de enteros con nmeros aleatorios.

Los nmeros aleatorios debern estar comprendidos entre dos lmites (desde, hasta) ambos incluidos.

El mtodo recibe como parmetros los valores desde, hasta y el tamao del array.

El mtodo devuelve mediante return el array de enteros creado.

Para obtener nmeros enteros aleatorios usaremos el mtodo nextInt() de la clase Random.

Para que los nmeros aleatorios obtenidos estn dentro de los limites utilizaremos el mtodo nextInt()
de la siguiente frma: nextInt(hasta - desde + 1) + desde

public static int [] llenarArrayAleatorio(int desde, int hasta, int tam){

int[] numeros = new int[tam];

Random rnd = new Random();

for (int i = 0; i < numeros.length; i++) {


numeros[i] = rnd.nextInt(hasta - desde + 1) + desde;

return numeros;

Si los nmeros no se pueden repetir debemos complicar un poco ms el cdigo.

En este caso cada vez que se obtiene un nmero aleatorio se debe comprobar si ya est en el array.

Para hacer este trabajo vamos a escribir un mtodo llamado comprobarSiContiene. A este mtodo se le
enva el array, la posicin del elemento actual y el nmero aleatorio a insertar y devuelve true si el
nmero ya existe en el array. En ese caso se vuelve a sacar otro nmero aleatorio.

public static int[] llenarArrayAleatorio(int desde, int hasta, int tam) {

int[] numeros = new int[tam];

Random rnd = new Random();

int n;

for (int i = 0; i < numeros.length; i++) {

do {

n = rnd.nextInt(hasta - desde + 1) + desde;

} while (comprobarSiContiene(numeros, i, n));

numeros[i] = n;

return numeros;

public static boolean comprobarSiContiene(int[] numeros, int indice, int valor) {

for (int i = 0; i < indice; i++) {

if (numeros[i] == valor) {

return true;

return false;

}
Esta sera la solucin para aquellos que estn empezando a programar. Pero en este caso nos podemos
ahorrar trabajo utilizando la API de Java. En concreto utilizando un ArrayList y el mtodo shuffle de
Collections.

La idea es llenar un ArrayList con todos los nmeros comprendidos entre los lmites desde/hasta. A
continuacin se llama al mtodo shuffle para desordenarlos y despus se pasan al array de enteros los
tam primeros elementos, donde tam es el tamao del array a devolver.

El mtodo utilizando el ArrayList y Collections.shuffle quedara as:

private static int[] llenarArrayAleatorio(int desde, int hasta, int tam) {

ArrayList<Integer> array = new ArrayList<Integer>();

for (int i = desde; i <= hasta; i++) {

array.add(i);

Collections.shuffle(array);

int [] numeros = new int[tam];

for(int i = 0; i<numeros.length; i++){

numeros[i]=array.get(i);

return numeros;

Ejercicios con ArrayList

Mtodo mostrarResultados(): muestra por pantalla todas las alturas y calcula y muestra el nmero de
alumnos con altura superior e inferior a la media. Recibe como parmetros el ArrayList con las alturas de
todos los alumnos y la media calculada anteriormente.

Solucin:

import java.util.ArrayList;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

//creamos el ArrayList que contendr la altura de los alumnos

ArrayList<Double> altura = new ArrayList();

int N;

double media;
//obtenemos el nmero de alumnos de la clase

N = numeroAlumnos();

//leemos la altura de los N alumnos

leerAlturas(altura, N);

//calculamos la media

media = calcularMedia(altura);

//mostramos los resultados

mostrarResultados(altura, media);

//Mtodo para pedir por teclado el nmero de alumnos de la clase

public static int numeroAlumnos() {

Scanner sc = new Scanner(System.in);

int n;

do {

System.out.print("Introduce nmero de alumnos: ");

n = sc.nextInt();

} while (n < 1);

return n;

//Este mtodo recibe el ArrayList y el nmero de alumnos de la clase

//Pide por teclado la altura de todos los alumnos y las guarda en el ArrayList

public static void leerAlturas(ArrayList<Double> a, int n) {

Scanner sc = new Scanner(System.in);

int i;

double alto;

for (i = 1; i <= n; i++) {

do {

System.out.print("Alumno " + i + " altura: ");

alto = sc.nextDouble();

} while (alto <= 0);


a.add(alto); //aade la altura al final del ArrayList

//Este mtodo recibe el ArrayList con todas las alturas

//calcula y devuelve la media

public static double calcularMedia(ArrayList<Double> a) {

double media = 0;

for (Double d : a) {

media = media + d;

return media / a.size();

//Muestra la altura de todos los alumnos, la media y calcula y muestra

//cuantos alumnos hay con altura superior a la media

//y cuntos con altura inferior

public static void mostrarResultados(ArrayList<Double> a, double media) {

int superior = 0, inferior = 0;

System.out.println("alturas introducidas: ");

System.out.println(a);

for (Double d : a) {

if (d > media)

superior++;

else if (d < media)

inferior++;

System.out.printf("Media: %.2f %n", media);

System.out.println("Hay " + superior + " alumnos ms altos que la media");

System.out.println("Hay " + inferior + " alumnos ms bajos que la media");

}
Leer nmeros por teclado hasta introducir -99. Calcular la suma, la media y cuntos son mayores que la
media.

import java.util.ArrayList;

import java.util.Iterator;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

ArrayList<Integer> array = leerValores();

double suma = calcularSuma(array);

double media = suma / array.size();

mostrarResultados(array, suma, media);

//pedir por teclado los valores y guardarlos en el ArrayList

//la lectura acaba cuando se introduzca -99

public static ArrayList<Integer> leerValores() {

ArrayList<Integer> valores = new ArrayList();

Scanner sc = new Scanner(System.in);

int n;

System.out.print("Introduce entero. -99 para acabar: ");

n = sc.nextInt();

while (n != -99) {

valores.add(n);

System.out.print("Introduce entero. -99 para acabar: ");

n = sc.nextInt();

return valores;

//recorrer el ArrayList y sumar todos sus elementos

public static double calcularSuma(ArrayList<Integer> valores) {

double suma = 0;
Iterator it = valores.iterator();

while (it.hasNext()) {

suma = suma + (Integer) it.next();

//next() devuelve un dato de tipo Object. Hay que convertirlo a Integer

return suma;

//Mostrar valores, su suma y su media aritmtica

//y cuntos hay superiores a la media

public static void mostrarResultados(ArrayList<Integer> valores, double suma, double media) {

int cont = 0;

System.out.println("Valores introducidos: ");

System.out.println(valores);

System.out.println("Suma: " + suma);

System.out.printf("Media: %.2f %n", media);

for (Integer i : valores) {

if (i > media) {

cont++;

System.out.println(cont + " valores superiores a la media");

Rotar los elementos de un ArrayList en Java

Programa completo para utilizar estos mtodos:

import java.util.ArrayList;

import java.util.Scanner;

public class Main {


public static void main(String[] args) {

ArrayList<Integer> A = leerArray();

mostrar(A);

//utilizando el mtodo clsico

desplazarDerecha(A);

mostrar(A);

//utilizando solo los mtodos de ArrayList

desplazarDerecha2(A);

mostrar(A);

//pedir por teclado los valores del ArrayList

public static ArrayList<Integer> leerArray() {

Scanner sc = new Scanner(System.in);

ArrayList<Integer> numeros = new ArrayList<Integer>();

int N;

do {

System.out.print("Nmero de elementos del array (>0): ");

N = sc.nextInt();

} while (N <= 0);

for (int i = 0; i < N; i++) {

System.out.print("elemento[" + i + "]= ");

numeros.add(sc.nextInt());

return numeros;

//mtodo clsico: guardamos el ltimo elemento en un auxiliar,

//desplazamos todos los elementos una posicin a la derecha

//finalmente guardamos en el primer elemento el valor guardado en el auxiliar

public static void desplazarDerecha(ArrayList<Integer> a) {

int i;
int aux = a.get(a.size() - 1); //guardar el ltimo elemento en una variable

for (i = a.size() - 1; i > 0; i--) { //desplazar los elementos

a.set(i, a.get(i - 1)); //a cada elemento se le asigna el anterior

a.set(0, aux); //asignar al primero el ltimo que se guard al principio

//Utilizando mtodos de ArrayList:

//guardamos el ltimo elemento en una variable

//insertamos este elemento al principio

//eliminamos el ltimo elemento

public static void desplazarDerecha2(ArrayList<Integer> a) {

int aux = a.get(a.size()-1);

a.add(0,aux);

a.remove(a.size()-1);

//Mtodo para mostrar todo el ArrayList

public static void mostrar(ArrayList<Integer> a) {

System.out.println(a);

Vous aimerez peut-être aussi