jueves, 20 de abril de 2017

Averiguar la palabra secreta

Crea una aplicación que pida al usuario una palabra secreta y, a continuación, tendrá tres oportunidades de adivinarla.

Si no la acierta en los tres intentos se informará de cuál era la palabra correcta, y si acierta en cualquiera de los tres intentos, el programa finalizará indicándo al usuario que ha acertado.


Ejemplo:
Introduzca palabra secreta:

> “Madagascar”

Intenta averiguar la palabra, intento 1:

> “amigo”

Intenta averiguar la palabra, intento 2:

> “perro”

Intenta averiguar la palabra, intento 3:

> “madagascar”

Enhorabuena!!


SOLUCIÓN EN JAVA:
package averiguapassword;

import javax.swing.JOptionPane;

public class AveriguaPassword {


    public static void main(String[] args) {
       int intentos=0;
       String secreta, palabra;
       
       secreta=JOptionPane.showInputDialog("Introduzca la palabra secreta");
       do{
           palabra=JOptionPane.showInputDialog("Intenta averiguar la palabra, intento: "+(intentos+1)); 
           //Se seguirán dando oportunidades mientras que el usuario no acierte ni consuma los 3 intentos
       } while (!palabra.equalsIgnoreCase(secreta) && ++intentos<3);
       if (intentos==3){
           JOptionPane.showMessageDialog(null, "Lo siento, la palabra secreta era: "+secreta);
       } else {
           JOptionPane.showMessageDialog(null, "Enhorabuena!!");
       }
    }
    
}

jueves, 23 de marzo de 2017

Pasar una subcadena a mayúsculas

Crea una función que reciba dos cadenas de caracteres y que devuelva la primera cadena, pero transformando en mayúsculas la parte que coincide con la segunda cadena introducida.

Desde la función principal se pedirán las dos cadenas y se mostrará el resultado que devuelva la función de arriba.


Ejemplo:
Introduzca primera cadena:

> “Este es mi amigo Juan”

Introduzca segunda cadena:

> “amigo”

Resultado: “Este es mi AMIGO Juan”.


SOLUCIÓN EN JAVA:
package subcadenamayuscula;

import javax.swing.JOptionPane;

public class SubcadenaMayuscula {

    static String pasaMayusculas(String cadena, String parte){
        int posicion;
        String subcadena;
        
        posicion=cadena.indexOf(parte);
        if (posicion!=-1){   //Solo si el resultado de llamar a indexOf es distinto de -1 es porque la ha encontrado
            subcadena=cadena.substring(posicion,posicion+parte.length());   
            //Devuelvo la nueva cadena formada por la primera parte de la cadena principal si tocar,
            //la segunda parte pasada a mayúsculas y la tercer parte sin tocar
            return cadena.substring(0,posicion)+subcadena.toUpperCase()+cadena.substring(posicion+parte.length());
        } else{
            return cadena;
        }
    }
    
    public static void main(String[] args) {
        String cadena1,cadena2;
        
        cadena1=JOptionPane.showInputDialog("Introduzca primera cadena:");
        cadena2=JOptionPane.showInputDialog("Introduzca segunda cadena:");
        JOptionPane.showMessageDialog(null, "Resultado: "+pasaMayusculas(cadena1,cadena2));
        
    }
    
}

miércoles, 22 de marzo de 2017

Cadena Espejo

Crea una función que reciba una cadena de caracteres y la devuelva invertida con efecto espejo, esto es, se concatena a la palabra original su inversa, compartiendo la última letra, que hará de espejo, por lo que la palabra obtenida se lee igual hacia adelante que hacia atrás.

Desde la función principal se pedirá al usuario que introduzca una cadena y haciendo uso de dicha función se le mostrará su correspondiente cadena espejo.



Ejemplo:
Introduzca una cadena:

> “teclado”

Resultado: “tecladodalcet”


SOLUCIÓN EN JAVA:
package cadenainvertida;

import javax.swing.JOptionPane;


public class CadenaInvertida {

    static String espejo(String original){
        int i;
        String nueva="";
        
        for (i=original.length()-1 ; i >= 0 ; i--){
            nueva=nueva+original.charAt(i);
        }
        return original+nueva;
    }
    
    public static void main(String[] args) {
       String cadena;
       
       cadena=JOptionPane.showInputDialog("Introduza una cadena");
       System.out.println("Resultado: "+espejo(cadena));
    }

martes, 14 de febrero de 2017

Elimina espacios en blanco de una frase

Crea una función que reciba como parámetro una cadena y devuelva la cadena eliminando los espacios en blanco que hay en ella.
Pruébala pidiendo al usuario que introduzca una frase desde la función principal y mostrándola sin espacios utilizando dicha función.


Ejemplo:
Introduzca una frase:

> En un lugar de la Mancha

Resultado: EnunlugardelaMancha


SOLUCIÓN EN JAVA:
package eliminaespaciosfrase;

import javax.swing.JOptionPane;

public class EliminaEspaciosFrase {

    //Para eliminar los espacios utilizo la función indexOf que 
    //devuelve la posición del primer espacion en blanco a partir
    //de una posición dada.
    //La idea general es componer una nueva frase, pero solo añadiendo 
    //las palabras de la frase original y no los espacios, para marcar el
    //comienzo y final de cada palabra utilizo la función indexOf
    static String eliminaEspacios(String frase){
        String resultado="";
        int i=0,j;
        
        do {
            j=frase.indexOf(" ",i);
            if (j!=-1){
                resultado=resultado+frase.substring(i,j);
                i=j+1;
            } else {
                resultado=resultado+frase.substring(i,frase.length());
            }           
        } while (j!=-1);
        
        return resultado;
    }
    
    public static void main(String[] args) {
        String frase;
        
        frase=JOptionPane.showInputDialog(null, "Introduzca una frase:");
        System.out.println("La frase sin espacios es: "+eliminaEspacios(frase));
    }
}

Intercambia primera y última palabras de una frase

Crea una función que reciba como parámetro una cadena de texto con una frase y dicha función tendrá que devolver dicha cadena pero invirtiendo la primera y la última palabra.
Desde la función principal tendrás que pedir al usuario que introduzca una frase y le mostrarás dicha frase con la primera y última palabra intercambiada.


Ejemplo:
Introduzca una frase:

> El cielo tiene nubes negras

Resultado: negras cielo tiene nubes El


SOLUCIÓN EN JAVA:
package invierteprimeraultima;

import javax.swing.JOptionPane;


public class InviertePrimeraUltima {

    //Esta función divide la frase en tres partes:
    // 1. primera palabra
    // 2. desde la segunda palabra hasta la penúltima
    // 3. última palabra
    // y devuelve la frase poniendo las partes en el orden 3-2-1
    static String invierte(String cadena){
        String parte1,parte2,parte3;
        
        //Primero comprueba que haya al menos un espacio
        if (cadena.indexOf(" ")!=-1){
            parte1=cadena.substring(0,cadena.indexOf(" "));
            parte2=cadena.substring(cadena.indexOf(" "),cadena.lastIndexOf(" ")+1);
            parte3=cadena.substring(cadena.lastIndexOf(" "),cadena.length());
            
            return parte3+parte2+parte1;
            
        } else {
            //sino hay ningún espacio quiere decir que se trataba de una sola palabra
            //así que la devuelvo tal cual
            return cadena;
        }
        
        
    } 
    public static void main(String[] args) {
        String frase;
        
        frase=JOptionPane.showInputDialog("Introduzca una frase (al menos de dos palabras)");
        System.out.println("Cadena invirtiendo primer y última palabras: "+invierte(frase));
    }
    
}

lunes, 13 de febrero de 2017

Calculo letra DNI

Crea una función para calcular la letra del NIF que le corresponde al número de DNI que le pasan como parámetro.
Desde la función principal tendrás que pedir al usuario un número de DNI y mostrar la letra que le corresponde al usuario haciendo uso de la función anterior.


Ejemplo:
Introduzca un número de DNI:
> 22356857
Al DNI: 22356857 le corresponde la letra: Y


SOLUCIÓN EN JAVA:
package calculonif;

import javax.swing.JOptionPane;

public class CalculoNIF {

    //Esta función devuelve la letra que le corresponde al número de dni que se le 
    //pasa como parámetro
    static char calculaLetra(long numero){
        String letras="TRWAGMYFPDXBNJZSQVHLCKE";    
        int posicion;
        
        //Calculo el resto de la división entre 23 para veriguar la posición 
        //dentro de la cadena de letras definida arriba
        posicion=(int)(numero%23);
        
        //Devuelvo la letra que hay en la posición "posicion" de la cadena de letras
        return letras.charAt(posicion);
    }
    public static void main(String[] args) {
        String dni;
        long numero=0;
        
        dni=JOptionPane.showInputDialog("Introduzca un número de DNI:");
        try{
            numero=Long.parseLong(dni);
            JOptionPane.showMessageDialog(null,"Al número de DNI: "+dni+" le corresponde la letra: "+calculaLetra(numero));
        } catch (NumberFormatException e){
            JOptionPane.showMessageDialog(null, "Formato incorrecto en el dni");
        }   
    } 
}

jueves, 9 de febrero de 2017

Cadenas: Cuenta número de vocales

Crea una función que cuente el número de vocales que contiene una cadena.
Desde la función principal tendrás que pedir una palabra o frase al usuario y tendrás que mostrar el número de vocales que contiene haciendo uso de la función anterior.


Ejemplo:
Introduzca una palabra o frase:

> “La lluvia en Sevilla es una maravilla”

La palabra o frase contiene 15 vocales.


SOLUCIÓN EN JAVA:
package numerovocales;

import javax.swing.JOptionPane;


public class NumeroVocales {

    static int cuentaVocales(String cadena){
        int suma=0,i;
        
        //Para evitar comparar minúscula y mayúsculas de forma separada
        //transformo toda la cadena a minúsculas
        cadena=cadena.toLowerCase();
        for (i=0 ; i < cadena.length() ; i++){
            if (cadena.charAt(i)=='a' || 
                cadena.charAt(i)=='e' ||
                cadena.charAt(i)=='i' || 
                cadena.charAt(i)=='o' || 
                cadena.charAt(i)=='u') {
                suma++;
            }
        }
        return suma;
    }
    
    public static void main(String[] args) {
        String cadena;
        
        //Pido al usuario una palabra o frase
        cadena=JOptionPane.showInputDialog("Introduce una palabra o frase:");
        //Y muestro el número de vocales que contiene dicha palabra o frase 
        //haciendo uso de la funcion "cuentaVocales" creada más arriba
        System.out.println("El número de vocales de la cadena es: "+cuentaVocales(cadena));
    }
    
}