Mostrando entradas con la etiqueta catch. Mostrar todas las entradas
Mostrando entradas con la etiqueta catch. Mostrar todas las entradas

sábado, 31 de diciembre de 2016

Arrays: Suma un segundo

Crea una función llamada "sumaUnSegundo" que reciba como prámetro un array que contenga los tres números que componen una hora:
[horas, minutos, segundos]
y a partir de ahí sume un segundo a dicha hora, de tal forma que se tenga en cuenta que si el secundero llega a 60, tendría que aumentarse
en uno los minutos y poner a 0 los segundos, y lo mismo cuando los minutos llegan a 60 y las horas a 24.
Desde la función principal, se pedirá al usuario los datos de una hora completa (horas, minutos y segundos) y se llamará a dicha función para
comprobar que se ha aumentado un segundo de forma correcta.


Ejemplo:
Hora: 12
Minutos: 23
Segundos: 59

Resultado después de sumar un segundo: 12:24:00

Hora : 14
Minutos: 59
Segundos: 59

Resultado después de sumar un segundo: 15:00:00


SOLUCIÓN EN JAVA:
package arrayhorasminutossegundos;

import java.util.Date;
import javax.swing.JOptionPane;

public class ArrayHorasMinutosSegundos {

    static void sumaUnSegundo(int []hora){
        
        hora[2]+=1;
        if (hora[2]==60){
            hora[1]+=1;
            hora[2]=0;
            if (hora[1]==60){
                hora[0]+=1;
                hora[1]=0;
                if (hora[0]==24)
                    hora[0]=0;
            }
        }
    }
    
    public static void main(String[] args) {
        int tiempo[]=new int[3];  //Array de 3 elementos: Horas, minutos y segundos
        int hora,minutos,segundos;
        //Completo la hora con la información que introduzca el usuario        
        try {
            hora=Integer.parseInt(JOptionPane.showInputDialog("Horas:"));
            minutos=Integer.parseInt(JOptionPane.showInputDialog("Minutos:"));
            segundos=Integer.parseInt(JOptionPane.showInputDialog("Segundos:"));
            //Además de comprobar que son números correctos, compruebo que están dentro de los
            //límites adecuados según se trate de horas, minutos o segundos
            if ((hora>=0 && hora<=23) && (minutos>=0 && minutos<=59) && (segundos>=0 && segundos<=59)){
                tiempo[0]=hora;
                tiempo[1]=minutos;
                tiempo[2]=segundos; 
            } else 
                throw new NumberFormatException();
            
                       
            //Primero muestro la hora introducida por el usuario
            System.out.printf("%02d:%02d:%02d\n\n",tiempo[0],tiempo[1],tiempo[2]);
             //Si todo ha ido bien llamo a una función para que aumente un segundo la hora actual
            sumaUnSegundo(tiempo);
            //y de nuevo muestro la hora después de haber sumado un segundo
            System.out.print("Resultado después de sumar un segundo:  ");
            System.out.printf("%02d:%02d:%02d\n",tiempo[0],tiempo[1],tiempo[2]);
        } catch (NumberFormatException e){
            JOptionPane.showMessageDialog(null, "Formato incorrecto");
        }
    }    
}

lunes, 26 de diciembre de 2016

Funciones: Dibujar rectángulos

Haz una función "dibujaRectangulo" que reciba como parámetros el ancho y el largo de un rectángulo y lo dibujo por consola utilizando para ello el simbolo "*". Desde la función principal tendrás que hacer una llamada a dicha función con el ancho y el largo del rectángulo, que el usuario introducirá por teclado

Ejemplo:
Introduzca ancho:
> 10
Introduzca largo:
> 3

Rectángulo:
**********
**********
**********



SOLUCIÓN EN JAVA:
package rectangulo;

import javax.swing.JOptionPane;


public class Rectangulo {

    static void dibujaRectangulo(int ancho, int largo){
        int i,j;
        
        for (i=1;i<=largo;i++){
            for (j=1;j<=ancho;j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
            
    public static void main(String[] args) {
        int ancho,largo;
        
        try{
            ancho=Integer.parseInt(JOptionPane.showInputDialog("Introduzca ancho: "));
            largo=Integer.parseInt(JOptionPane.showInputDialog("Introduzca largo: "));
            dibujaRectangulo(ancho,largo);
        } catch (NumberFormatException e){
            JOptionPane.showMessageDialog(null, "Formato Incorrecto");
        }
    }
}

Funciones: Imprime serie numérica

Escribe una función “ImprimeSerie” a la que le pases dos enteros y te escriba por la pantalla todos los valores comprendidos entre ambos. Lo hará en orden ascendente si el primero es menor que el segundo y descendente en caso contrario.
Desde la función principal "main" tendrás que hacer una llamada a dicha función con dos números que tendrás que pedir al usuario.


Ejemplo:
Introduzca el primer valor:
> 5
Introduzca el segundo valor:
> 15

Serie Ascendente:
6, 7, 8, 9, 10, 11, 12, 13, 14



Introduzca el primer valor:
> 85
Introduzca el segundo valor:
> 55

Serie Descendente:
84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56


SOLUCIÓN EN JAVA:
package imprimeserie;

import javax.swing.JOptionPane;

public class ImprimeSerie {

    static void imprimeSerie(int a,int b){
        int i;
        
        if (a>b){
            System.out.print("Serie descendente: ");
            for (i=a-1;i>=b+1;i--){
                System.out.print(i+" ");
            }
        } else {
            System.out.print("Serie ascendente: ");
            for (i=a+1;i<=b-1;i++){
                System.out.print(i+" ");
            }
        }
    }
    
    public static void main(String[] args) {
        int primero,segundo;
        try{
            primero=Integer.parseInt(JOptionPane.showInputDialog("Introduzca el primer valor: "));
            segundo=Integer.parseInt(JOptionPane.showInputDialog("Introduzca el segundo valor: "));
            imprimeSerie(primero,segundo);
        } catch (NumberFormatException e){
            JOptionPane.showMessageDialog(null, "Formato Incorrecto");
        }
    }
}

Funciones: Mínimo común múltiplo de dos números

Crea una función que calcule al mínimo común múltiplo de dos números cualesquiera. Desde la función principal se tendrá que pedir al usuario dos números y calcular el mínimo común múltiplo haciendo una llamada a la función creada.

Ejemplo:
Introduzca primer número:
> 3
Introduzca segundo número:
> 9

El mínimo común múltiplo de 3 y 9 es 9


Introduzca primer número:
> 6
Introduzca segundo número:
> 20

El mínimo común múltiplo de 6 y 20 es 60


SOLUCIÓN EN JAVA:
package mcm;

import javax.swing.JOptionPane;

public class MCM {
    static int mcm(int a, int b){
        int multiplo;
        
        //Lo primero es seleccionar el mayor de los dos
        if (a>b)
            multiplo=a;
        else
            multiplo=b;
        //Y ahora empiezo a probar si ese número es el mcm o lo son
        //los sucesivos superiores a él
        while (multiplo%a!=0 || multiplo%b!=0)
            multiplo++;
        //Para salir del bucle while, se deben cumplir:
        //- multiplo es un número múltiplo de a y de b simultáneamente        
        return multiplo;
    }
    
    public static void main(String[] args) {
       int valor1, valor2, resultado;
       //Pido al usuario los dos numeros para calcular el mcm:
       try{
           valor1=Integer.parseInt(JOptionPane.showInputDialog("Introduzca primer número:"));
           valor2=Integer.parseInt(JOptionPane.showInputDialog("Introduzca segundo número:"));
           
           //y ahora calculo el mínimo común múltiplo llamando a la función "mcm"
           resultado=mcm(valor1,valor2);
           
           JOptionPane.showMessageDialog(null, "El mínimo común múltiplo de "+valor1+" y "+valor2+" es "+resultado);
       } catch (NumberFormatException e){
           JOptionPane.showMessageDialog(null, "Formato de número incorrecto");
       }
    }       
}

Funciones: Bisiesto

Escribe una función que debe devolver si el año que se pasa como parámetro es bisiesto o no. (true:bisiesto, false:no bisiesto)
Desde la función principal se pedirá al usuario que introduzca un número de año, se invocará a dicha función con ese número (siempre que esté comprendido entre 1900 y 2100) y después se indicará si dicho año es bisiesto o no en función del valor devuelto por la función.


Ejemplo:
Introduzca un año:
> 1900

El año 1900 NO es bisiesto


SOLUCIÓN EN JAVA:
package bisiestos;

import javax.swing.JOptionPane;

public class Bisiestos {
    
    static boolean bisiesto(int a){
        
        //Un año es bisiesto si es divisible por 4 y por 100 ó es divisible por 400
        return (a%4==0 && a%100!=0) || (a%400==0);        
    }
    
    public static void main(String[] args) {
        boolean resultado;
        int anyo;
        
        try {
            anyo=Integer.parseInt(JOptionPane.showInputDialog(null, "Introduzca un año"));        
            resultado=bisiesto(anyo);
            if (resultado==true){
                JOptionPane.showMessageDialog(null,"El año "+anyo+" SI es bisiesto");
            } else {
                JOptionPane.showMessageDialog(null,"El año "+anyo+" NO es Bisiesto");
            }
        } catch (NumberFormatException e){
            JOptionPane.showMessageDialog(null, "Año incorrecto");
        }            
    }
}

Funciones: Máximo común divisor de dos números

Crea una función que calcule al máximo común divisor de dos números cualesquiera.
Desde la función principal se tendrá que pedir al usuario dos números y calcular el máximo común divisor haciendo una llamada a la función creada.


Ejemplo:
Introduzca primer número:
> 3
Introduzca segundo número:
> 9

El máximo comun divisor de 3 y 9 es 3


Introduzca primer número:
> 6
Introduzca segundo número:
> 20

El máximo comun divisor de 6 y 20 es 2


SOLUCIÓN EN JAVA:
package mcd;

import javax.swing.JOptionPane;

public class MCD {

    static int mcd(int a, int b){
        int divisor;
        
        //Lo primero es seleccionar el menor de los dos
        if (a>b)
            divisor=b;
        else
            divisor=a;
        //Y ahora empiezo a probar si ese número es el mcd o lo son
        //los sucesivos inferiores a él
        while ((a%divisor!=0 || b%divisor!=0) && divisor>1)
            divisor--;
        //Para salir del bucle while, se deben cumplir una de las dos condiciones:
        //- divisor es un mcd de ambos números
        //- divisor ha llegado a valer 1, con lo cual ése es el máximo común divisor
        return divisor;
    }
    
    public static void main(String[] args) {
       int valor1, valor2, resultado;
       //Pido al usuario los dos numeros para calcular el mcd:
       try{
           valor1=Integer.parseInt(JOptionPane.showInputDialog("Introduzca primer número:"));
           valor2=Integer.parseInt(JOptionPane.showInputDialog("Introduzca segundo número:"));
           
           //y ahora calculo el máximo común divisor llamando a la función "mcd"
           resultado=mcd(valor1,valor2);
           
           JOptionPane.showMessageDialog(null, "El máximo común divisor de "+valor1+" y "+valor2+" es "+resultado);
       } catch (NumberFormatException e){
           JOptionPane.showMessageDialog(null, "Formato de número incorrecto");
       }
    }
    
}

domingo, 25 de diciembre de 2016

Funciones: Tabla de Multiplicar

Escribe una función que reciba como parámetro el número del que se quiere imprimir la tabla de multiplicar y la muestre por pantalla.
Desde la función prinpipal haz una llamada a dicha función con un número que le pidas al usuario.


Ejemplo:
Introduzca el número del que quiere ver la tabla de multiplicar:
> 5

5*1=5
5*2=10
5*3=15
5*4=20
5*5=25
5*6=30
5*7=35
5*8=40
5*9=45
5*10=50



SOLUCIÓN EN JAVA:
package funciontablamultiplicar;

import javax.swing.JOptionPane;

public class FuncionTablaMultiplicar {

    static void tablaMultiplicar(int numero){
        int i;
        
        for (i=1;i<=10;i++){
            System.out.println(numero+"*"+i+"="+(numero*i));
        }
    }
    public static void main(String[] args) {
        int num;
        
        try{
            num=Integer.parseInt(JOptionPane.showInputDialog("Introduzca el número del que quiere ver la tabla de multipliar:"));
            tablaMultiplicar(num);
        } catch (NumberFormatException e){
            JOptionPane.showMessageDialog(null, "Formato Incorrecto");
        }
    } 
}

sábado, 24 de diciembre de 2016

Funciones: Nombre Día Semana

Escribe una función que utiliza la estructura Switch,dicha función debe devolver el nombre del día de la semana en función del valor de una variable dia que se le pasa como parámetro. (1:Lunes, 2:Martes ...)
Desde la función principal se pedira al usuario que introduzca un número, se invocará a dicha función con ese número (siempre que esté comprendido entre 1 y 7) y después se imprimirá el nombre devuelto por la función.


Ejemplo:
Introduzca un número de día:
> 5

El día de la semana correspondiente a 5 es: Viernes



SOLUCIÓN EN JAVA:
package diaSemana;

import javax.swing.JOptionPane;

public class DiaSemana {

    static String diaSemana(int dia){        
        String nombreDia;
        
        switch (dia){
            case 1: nombreDia="Lunes"; break;
            case 2: nombreDia="Martes"; break;
            case 3: nombreDia="Miércoles"; break;
            case 4: nombreDia="Jueves"; break;
            case 5: nombreDia="Viernes"; break;
            case 6: nombreDia="Sábado"; break;
            case 7: nombreDia="Domingo"; break;
            default: nombreDia="Error";
        }
        return nombreDia;    
    }
    
    public static void main(String[] args) {
        int dia;
        
        try {
            dia=Integer.parseInt(JOptionPane.showInputDialog("Introduzca un número de día:"));
            JOptionPane.showMessageDialog(null, "El día de la semana correspondiente a "+dia+" es: "+diaSemana(dia));
        } catch (NumberFormatException e){
            JOptionPane.showMessageDialog(null, "Formato Incorrecto");
        }        
        System.out.println(diaSemana(1));
    }
}