jueves, 11 de diciembre de 2014

Buscar un número en un array

package busquedaenarray;
import java.util.Scanner;
import java.util.Arrays;
import java.util.Random;
/**
*
* @author juan
*/
public class BusquedaEnArray {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Random al = new Random();

Ejercicio 69: Calcular el máximo común divisor de dos números mediante el método de Euclídes

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

package ejercicio69;
import java.util.Scanner;
/**
*
* @author juan
*/
public class Ejercicio69 {

miércoles, 10 de diciembre de 2014

Leer 10 notas usando arrays y calcular la media y la nota mayor

package notasymayorconarrays;
import java.util.Scanner;
/**
*
* @author juan
*/
public class NotasYMayorConArrays {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        int [] notas= new int[10];
        int total, media, mayor;

Empezando con arrays

package explicacionarray;
import java.util.Scanner;
/**
*
* @author juan
*/
public class ExplicacionArray {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int [] unArray;
        int [] otroArray = new int[20];
        int lon=10;
        Scanner leer = new Scanner(System.in);
       
 

viernes, 5 de diciembre de 2014

Último dígito del factorial (acepta el reto 114

Ultimo dígito del factorial

Tiempo máximo: 3,000 s  Memoria máxima: 4096 KiB
Tu primo Luis, de 12 años, está aprendiendo a usar la calculadora. Su profesor le ha dicho que calcule el factorial de varios números. Pero, para evitar que le tengan que copiar números muy largos en el cuaderno, les ha pedido únicamente el último dígito, el de más a la derecha.
Recordando que el factorial es la multiplicación de todos los números entre el número y el uno (por ejemplo, el factorial de 8, escrito 8!, es 8 · 7 · 6 · 5 · 4 · 3 · 2 · 1), demuestra a tu primo Luis que tú eres capaz de hacerlo mucho más rápido que él.

Entrada

El programa recibirá en la primera línea de la entrada el número de casos de prueba. A continuación, cada caso de prueba estará compuesto de una única línea que contendrá un número (positivo).

Salida

Por cada caso de prueba n, se mostrará el último dígito (el de la derecha) de su factorial, n!.

Entrada de ejemplo

3
2
3
4

Salida de ejemplo

2
6
4

jueves, 4 de diciembre de 2014

Explicación cadenas

package buscarunapalabra;
import java.util.Scanner;
/**
*
* @author juan
*/
public class BuscarunaPalabra {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        boolean encontrada=false;
        int pos=0,cont,coinciden=0;
        String cadena, buscada;
       
        System.out.println("Introduzca la cadena a buscar");
        cadena= leer.nextLine();
       
        System.out.println("Introduzca palabra: ");
        buscada= leer.nextLine();
       
        cont=0;
        while (!encontrada && cont <= (cadena.length()-buscada.length()))
        {
            if (cadena.charAt(cont)==buscada.charAt(0))
            {
   

lunes, 1 de diciembre de 2014

Ejercicio 46

Autor: Miguel Ángel Romero
  package ejer46;
import java.util.Scanner;
/**
*
* @author juan
*/
public class Ejer46 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        int num;

        do {
            System.out.println("Introduzca un número por teclado entre 3 y 10:");
            num = leer.nextInt();

        } while (num < 3 || num > 15 || num % 2 == 0);

        for (int i = 1; i < num; i = i + 2) {

            for (int k = i; k < num; k = k + 2) {
                System.out.print(" ");
            }
            for (int j = 0; j < i; j++) {
               
                if (j == 0 || j == i - 1) {
                    System.out.print("*");
                } else {
                    System.out.print(" ");
                }


miércoles, 26 de noviembre de 2014

3n + 1 (uva 100)

Los problemas en informática se clasifican a menudo de acuerdo a un cierto tipo (p.e. irresolubles, recursivos, imposibles,...). En este problema analizareis una propiedad de un algoritmo cuya clasificación no es conocida para todas las posibles entradas.

El Problema:

Considera el siguiente algoritmo
1. input n

2. print n

3. if n = 1 then STOP

4. if n is odd then tex2html_wrap_inline44

5. else tex2html_wrap_inline46

6. GOTO 2


Dada como entrada el número 22, se imprimirían la siguiente secuencia de números 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

Se supone que el algoritmo anterior terminará (cuando se imprime un uno) para cualquier valor entero. A pesar de la simplicidad del algoritmo, se desconoce si la suposición/conjetura es cierta. Ha sido verificada, sin embargo, para todos los enteros n tales que 0

Dada una entrada n, es posible detrerminar el número de números impresos (incluyendo al uno). Para un número n se le llama longitud de ciclo n. En el ejemplo superior, la longitud de ciclo de 22 es 16.
Para cualesquiera números i y j tienes que determinar la longitud de ciclo para todos los números entre i y j.


La entrada.

Consistirá en un par de enteros i y j, un par de enteros por línea. Todos los enteros menores que 1000000 y mayores que cero.

Debes procesar todos los pares de enteros y determinar el ciclo de longitud máxima comprendida entre esos dos valores incluyendo i y j.

Ppuedes asumir  que no habrá operaciones mayores que enteros de 32 bits.

La salida.

Para cada par de enteros i y j debes mostrar i, j y la máxima longitud de ciclo para los enteros comprendidos e incluyendo i y j. Estos tres números se mostrarán separados por un espacio, uno por  línea. Los enteros i y j deben aparecer en el mismo orden que aparecen en la entrada y deben ir seguidos de la longitud de ciclo máxima (en la misma línea.

Sample Input

1 10
100 200
201 210
900 1000

Sample Output

1 10 20
100 200 125
201 210 89
900 1000 174



Explicación y solución: serverfault.com/questions/40156/puppet-force-service-restart-after-configuration-file-was-modified package pkg3nmas1;
import java.util.Scanner;

/**
*
* @author juan
*/
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
    
        Scanner leer = new Scanner(System.in);
        int num1,num2,mayor,menor,maximo;
        while (leer.hasNextInt()) {
            num1=leer.nextInt();
            num2=leer.nextInt();
            menor=Math.min(num2, num1);
            mayor=Math.max(num2, num1);
        
            maximo=0;
            for (int i = menor; i <=mayor; i++) {
                maximo= Math.max(maximo, cuentaSaltos(i));
            }
            System.out.println(num1+ " " + num2 + " " + maximo);
        
        
        }
      

lunes, 24 de noviembre de 2014

Ejercicio 39

package ejercicio38;

/**
*
* @author juan
*/
public class Ejercicio38 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String cadena;
        int centenas, decenas, unidades;
        //unidades=decenas=centenas=0;
   
        for (int i = 100; i < 1000; i++) {
           cadena=String.valueOf(i);
       
           unidades=Character.getNumericValue(cadena.charAt(cadena.length()-1));
           decenas = Character.getNumericValue(cadena.charAt(1));
           centenas=Character.getNumericValue(cadena.charAt(0));
           if (i==(int)(Math.pow(unidades, 3)+Math.pow(decenas, 3)+Math.pow(centenas, 3)))

Ejercicio 34: Divisiones mediante restas sucesivas

package ejercicio34;
import java.util.Scanner;
/**
*
* @author juan
*/
public class Ejercicio34 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        int cont, dividendo, divisor, dividendoInicial,divisorInicial;
        boolean salir=false;
       
 

viernes, 21 de noviembre de 2014

Modificar el programa para que calcule la media de todos los alumnos

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

package notas;
import java.util.Scanner;
/**
*
* @author juan
*/
public class Notas {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int nota,media,numAlus,suma=0,numAsig=10;
        Scanner leer = new Scanner(System.in);
       
        do {
            System.out.println("Introduzca el número de alumnos");
            numAlus= leer.nextInt();
        } while (numAlus<=0);
       
        for (int i = 0; i < numAlus; i++) {
            suma=0;
            for (int j = 1; j <= numAsig; j++) {
                System.out.println("Introduzca la nota de la asignatura "+j);
                do {
                    nota=leer.nextInt();
                } while (nota<0 || nota >10);
                suma+=nota;
            }
            System.out.println("La media es: " + (suma/numAsig));
   
        }
      
    }
   
}

miércoles, 19 de noviembre de 2014

Ejercicio 32: Acertar un número aleatorio en x intentos

package ejercicio32;
import java.util.Scanner;
import java.util.Random;
/**
*
* @author juan
*/
public class Ejercicio32 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int cont=0,intentos;
        int num,oculto;
        Random al = new Random();
        Scanner leer = new Scanner(System.in);
        boolean acertado= false;
  

Programame: Hola mundo ( 116 )

¡Hola mundo!

Tiempo máximo: 1,000 s  Memoria máxima: 2048 KiB
Dicen los viejos que en este país el latín era una asignatura obligatoria por la que todos los estudiantes de bachillerato tenían que pasar.
Dicen los viejos que el primer día de clase de latín cualquiera esperaba que los alumnos salieran sabiendo el "rosa rosae".
Dicen los viejos que esa era la primera declinación.
Quizá, dentro de muchos años, nosotros seamos los viejos que contemos batallitas de cómo se enseñaba informática. Y quizá entonces, digamos que en la primera clase de cualquier curso en el que se explicara un lenguaje de programación, se tenía que salir habiendo escrito "un hola mundo".
Y eso es lo que vamos a hacer. Escribir un programa que escriba tantos "hola mundo" como nos pidan.

Entrada

La entrada consta de una única línea que contiene un número n, 0 ≤ n ≤ 5, que indica cuántos mensajes hay que emitir.

Salida

Cada mensaje a escribir aparecerá en una única línea y será la cadena "Hola mundo.".

Entrada de ejemplo

3

Salida de ejemplo

Hola mundo.
Hola mundo.
Hola mundo.

lunes, 17 de noviembre de 2014

UVA 11715 - Car (coche)

Estás en un coche y vas a la velocidad u m/s. Tu aceleración a es constante. Tras un tiempo particular t, tu velocidad será v m/s y tu desplazamiento es s. Ahora se te dan algunos (no todos) los valores para dichas variables. Tienes que encontrar los parámetros perdidos.

Entrada/Input
El fichero de entrada puede contener múltiples casos de prueba. Cada caso puede ser uno de los siguientes:

1 u v t
2 u v a
3 u a s
4 v a s

La entrada terminará con un simple 0.

Salida/Output
Para cada caso de tu entrada tienes que imprimir una línea que contenga el número de caso y:


Si es 1 u v t se te darán y deberás imprimir  s y a
Si es 2 u v a se te darán y deberás imprimir  s y t
Si es 3 u a s se te darán y deberás imprimir  v y t
Si es 4 v a s se te darán y deberás imprimir  u y t

Comprueba los ejemplos para mas detalles. Puedes asumir que los casos dados no te conducirán a una situación no válida. Usa 'double' para todos los cálculos y la salida de todos los números con tres decimales.

Sample Input
Output for Sample Input
1 10 5 2.0
1 5 10.0 2
2 10 11 2
3 5 1 6
4 5.0 -1 6
0
Case 1: 15.000 -2.500
Case 2: 15.000 2.500
Case 3: 5.250 0.500
Case 4: 6.083 1.083
Case 5: 6.083 1.083

Problem Setter: Jane Alam Jan
Special Thanks: Md. Shiplu Hawlader



jueves, 13 de noviembre de 2014

Ejercicio 30 bis: Sumar los x primeros números primos

package ejercicio302;
import java.util.Scanner;
/**
*
* @author juan
*/
public class Ejercicio302 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner leer = new Scanner (System.in);
        int num,suma=0,cont,i;
        String cadena="";
       
        System.out.println("Introduzca el número de primos a sumar");
        num=leer.nextInt();
        cont=0;
        i=1;
 

Ejercicio 30: Listar los números primos hasta un número dado

package ejercicio30;

import java.util.Scanner;

/**
*
* @author juan
*/
public class Ejercicio30 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner leer = new Scanner (System.in);
        int numero;
       
        System.out.println("Introduzca un número (para mostrar los primos entre 1 y se número");
        numero = leer.nextInt();
        for (int i = 1; i <=numero ; i++) {
            if (esPrimo(i)) System.out.print(" "+i);
        }
    }
   
    //Devuelve true en caso de que el número sea primo o false en caso contrario
    public static boolean esPrimo(int num){
        boolean primo;
        int cont,raiz;
       
        primo=true;
        cont=2;
        raiz = (int)Math.sqrt(num);
        while (primo &&(cont<=raiz)){
            if (num%cont ==0) primo=false;
            else ++cont;
        }
        return primo;
    }
   
}

Ejercicio 29: Comprobar si un número es primo

los primos hay que comprobarlos hasta la raíz cuadrada del número...

package ejercicio29numerosprimos;
import java.util.Scanner;
/**
*
* @author juan
*/
public class Ejercicio29NumerosPrimos {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        boolean primo;
        int num;
        int cont,raiz;
        Scanner leer = new Scanner(System.in);
       
        System.out.println("Introduzca un número para comprobar si es primo");
        num=leer.nextInt();
       
        primo=true;
        cont=2;
        raiz = (int)Math.sqrt(num);
        while (primo &&(cont<=raiz)){
            if (num%cont ==0) primo=false;
            else ++cont;
        }
       
        if (primo==true) System.out.println("El número es primo");
        else System.out.println("NO es primo, es divisible al menos entre "+cont);
    }
   
}

miércoles, 12 de noviembre de 2014

Ejercicio 27: Cálculo de la media de una serie de notas

package ejercicio27;
import java.util.Scanner;

/**
*
* @author juan
*/
public class Ejercicio27 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        int nota, suma, cont;
        char seguir;
       
        do {
            suma = cont = 0;
            do {
                System.out.println("Introduzca una nota (negativa para salir)");
                nota = leer.nextInt();
                if (nota > 10) {
                    System.out.println("Por favor introduzca notas menores de 10");
                } else if (nota >= 0) {
                    suma += nota;
                    ++cont;
                }
            } while (nota >= 0);
            System.out.println("La media del alumno es: " + suma / cont);
            System.out.println("Desea introducir la nota de más alumnos");
            seguir = leer.next().toUpperCase().charAt(0);
        } while (seguir == 'S');
   
    }
   
}

Ejercicio 26: Descomponer una cantidad en billetes

package ejercicio26;
import java.util.Scanner;

/**
*
* @author juan
*/
public class Ejercicio26 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       Scanner leer = new Scanner (System.in);
       int cantidad, numB,resta;
       
       do {
            System.out.println("Introduzca cantidad");
            cantidad = leer.nextInt();
        } while (cantidad<0);
       
       /*
        numB=0;
        while (cantidad>=100) {
            numB++;
            cantidad-=100;
        }
        if (numB!=0)System.out.println("El número de billetes de 100 es: "+numB);
        */
        cantidad= getNumBilletes(cantidad,100);
        cantidad= getNumBilletes(cantidad,50);
        cantidad= getNumBilletes(cantidad,20);
        cantidad= getNumBilletes(cantidad,10);
        cantidad= getNumBilletes(cantidad,5);
        cantidad= getNumBilletes(cantidad,2);
        cantidad= getNumBilletes(cantidad,1);
  

Ejercicio 24: Suma de pares e impares entre dos números dados

package ejercicio24;
import java.util.Scanner;

/**
*
* @author juan
*/
public class Ejercicio24 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        int mayor, menor, num1, num2, par=0, impar=0;
       
        do {
            num1=getNum();
            num2=getNum();
            if (num1==num2) System.out.println("Los números de la serie no pueden ser iguales");
        } while (num1==num2);
       
        if (num1>num2) {
            mayor = num1;
            menor = num2;
        }
        else
        {
            mayor = num2;
            menor = num1;
        }
       
        for (int i = menor; i <= mayor; i++) {
            if (i%2==0) par+=i;
            else impar+=i;
        }
     

viernes, 7 de noviembre de 2014

Ejercicio 22: Triángulo de Floyd

package ejercicio22floyd;
import java.util.Scanner;
/**
*
* @author juan
*/
public class Ejercicio22Floyd {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        int num,cont=1;
        do {           
            System.out.println("Introduzca la cantidad de números que se leerán: ");
            num = leer.nextInt();
        } while (num<=0);
       
       
        for (int linea = 1; linea <= num; linea++)
         {
            for (int j = 1; j <= linea; j++) {
                System.out.print(cont+" ");
                ++cont;
            }
            System.out.println("");
           
           
        }
   
    }
   
   
}

Ejercicio 21: Calcular el mayor y el menor de una serie de números

Esta solución publicada es la de una lectura fuera del bucle (podríamos emplear el valor máximo de enteros modificando el if de dentro del bucle (eliminando la palabra else)).

public class Ejercicio21 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner leer = new Scanner (System.in);
        int num, cantidad,mayor, menor;
       
        //mayor= Integer.MIN_VALUE;
        //menor= Integer.MAX_VALUE;
       
        do {           
            System.out.println("Introduzca la cantidad de números que se leerán: ");
            cantidad = leer.nextInt();
        } while (cantidad<=0);
       
   

ejercicio 18: Sumar pares e impares con uno / dos bucles

public class Ejercicio18 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int sumPar=0,sumImpar=0;
       
        for (int i = 1; i <= 1000; i++) {
            if (i%2==0) {
                sumPar+=i;
            } else sumImpar+=i;
        }
        System.out.println("pares: "+ sumPar);
        System.out.println("impares: "+ sumImpar);
       
       
        sumImpar=0;
        for (int i = 1; i <= 1000; i+=2) {
            sumImpar+=i;
        }
       
        sumPar=0;
        for (int i = 2; i <= 1000; i+=2) {
            sumPar+=i;
       
        }
        System.out.println("pares: "+ sumPar);
        System.out.println("impares: "+ sumImpar);

    }
   
}

Ejercicio 17: Media de 30 valores

public class Ejercicio17AcumuladoresMedia {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int suma=0;
        for (int i = 1; i <= 1000; i++) {
            suma+=i;//suma=suma+i;
            System.out.println(i+": "+ suma);
        }
        System.out.println("Media"+((double)suma/30));
       
    }
   
}

Ejercicio 15: comprobar si la fecha es correcta

package ejercicio15fechascorrectas;
import java.util.Scanner;
/**
*
* @author juan
*/
public class Ejercicio15FechasCorrectas {

    /**
     * @param args the command line arguments
     */
    public static boolean esBisiesto(int num){
        return ( (num%4==0 && num%100!=0)|| (num%500==0) );
    }
    public static void main(String[] args) {
        int dia,mes,anho;
        Scanner leer = new Scanner(System.in);
        boolean correcta=true;
        String mensaje="";
       
        System.out.println("Introduzca el día");
        dia = leer.nextInt();
        System.out.println("Introduzca el día");
        mes = leer.nextInt();
        System.out.println("Introduzca el día");
        anho = leer.nextInt();
       
  

miércoles, 5 de noviembre de 2014

Ejercicio 14: Fechas correctas


package ejercicio15fechascorrectas;
import java.util.Scanner;
/**
*
* @author juan
*/
public class Ejercicio15FechasCorrectas {

    /**
     * @param args the command line arguments
     */
    public static boolean esBisiesto(int num){
        return ( (num%4==0 && num%100!=0)|| (num%500==0) );
    }
    public static void main(String[] args) {
        int dia,mes,anho;
        Scanner leer = new Scanner(System.in);
        boolean correcta=true;
        String mensaje="";
       
        System.out.println("Introduzca el día");
        dia = leer.nextInt();
        System.out.println("Introduzca el día");
        mes = leer.nextInt();
        System.out.println("Introduzca el día");
        anho = leer.nextInt();
       
        switch (mes) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
    

lunes, 3 de noviembre de 2014

Recursividad: fibonacci

   public static void main(String[] args) {
        String cadena;
       
      
       
        for (int i =1; i < 9; i++) {
            System.out.print(fibo(i)+ ",");
        }
    }
   
   
    public static int fibo (int num){
        int retorno;
       
        if ( (num == 1) || (num ==2) ){ 
            retorno=1;
        }
        else {
            retorno = fibo(num-1)+fibo(num-2);
        }
        return retorno;
    }
           
}

jueves, 30 de octubre de 2014

Tabla rara



public static void main(String[] args) {
        int menor=0,mayor=5;
        int diferencia;
        int inicial;
       
       
        diferencia= mayor-menor+1;
        for (int i = menor; i <= mayor; i++) {

            inicial = i;
            for (int cont = 0; cont < diferencia; cont++) {
               
                System.out.print(inicial + " ");
                if (inicial==mayor) inicial=menor;
                else ++inicial;
            }
            System.out.println("");
        }
   
    }

Tabla de multiplicar (bucles anidados)

    public static void main(String[] args) {
       
       
       
       
        for (int i = 1; i < 11; i++) {
            System.out.println("");
            System.out.println("TABLA DEL "+i);
            System.out.println("===========");
            for (int j = 1; j < 11; j++) {
                System.out.println(i +" * "+ j + " = " + i*j);
            }
           
        }
    }

Explicación Switch case

public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        int num;
        String mes="", diaSemana="";
       
        do {           
            System.out.println("Por favor introduzca el día de la semana (1-7)");
            num = leer.nextInt();
        } while (num<1 || num >7);
        switch (num) {
            case 1:
                diaSemana= "Lunes";
                break;
             case 2:
                diaSemana= "Martes";
                break;
             case 3:
                diaSemana= "Miércoles";
                break;
             case 4:
                diaSemana= "Jueves";
     

lunes, 27 de octubre de 2014

Leer artículos y calcular precios con funciones

public class FraVariosArticulos {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        
        String descripcion;
        char seguir;
        double pvp, totalFra, numArticulos, precio;
        
        totalFra=0;
        do {            
            System.out.println("Descripción");
            descripcion=leer.next();
            
            numArticulos = getNum("numero de artículos");
            precio = getNum("precio del artículo");
            
            pvp = numArticulos*precio*1.21;
            System.out.println("Precio del artículo "+pvp);
            totalFra+= pvp; // totalFra = totalFra + pvp;
          
            do {                
                System.out.println("Desea introducir más artículos ( S para seguir N para salir)");
                seguir = leer.next().toUpperCase().charAt(0);
            } while (seguir!='S' && seguir!='N');
          
            
        } while (seguir=='S');
        System.out.println("Total a pagar: "+totalFra);
    
    
    
    
    
    }
    public static double getNum(String tipoDeDato){
        Scanner leer = new Scanner(System.in);
        double numero;
        
        do {            
            System.out.println("Introduzca el "+tipoDeDato + " (el valor debe ser mayor que cero)");
            numero=leer.nextDouble();
        } while (numero<=0);
        return numero;
        
        
    }

}

Leer artículos y calcular precios (solución simple 1)

public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        
        String descripcion;
        char seguir;
        double pvp, totalFra, numArticulos, precio;
        
        totalFra=0;
        do {            
            System.out.println("Descripción");
            descripcion=leer.next();
            
            System.out.println("Número de artículos");
            numArticulos = leer.nextDouble();
            
            System.out.println("Precio");
            precio = leer.nextDouble();
            
            pvp = numArticulos*precio*1.21;
            System.out.println("Precio del artículo "+pvp);
            totalFra+= pvp; // totalFra = totalFra + pvp;
          
            do {                
                System.out.println("Desea introducir más artículos ( S para seguir N para salir)");
                seguir = leer.next().toUpperCase().charAt(0);
            } while (seguir!='S' && seguir!='N');
          
            
        } while (seguir=='S');
        System.out.println("Total a pagar: "+totalFra);

lunes, 20 de octubre de 2014

Área de un círculo

public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        double radio;
   
        System.out.println("Introduzca el radio del círculo");
        radio = leer.nextDouble();
        System.out.println("El área del círculo es : "+ areaCirculo(radio));
       
    }
   
    static double areaCirculo(double radio)
    {
        return Math.PI*Math.pow(radio, 2);
    }

Determinar si una letra es vocal o no

public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        String cadena;
        char letra;
        /*
        //leer una cadena
        cadena= leer.nextLine();
        //convertir a mayúscula
        cadena = cadena.toUpperCase();
        //tomamos la primera letra de la cadena
        letra = cadena.charAt(0);
        */
        do {           
            System.out.println("Introduzca una letra y pulse INTRO");
            //LO MISMO EN UN SOLO PASO
            letra = leer.nextLine().toUpperCase().charAt(0);

            if (letra == 'A' || letra == 'E' || letra == 'I' || letra == 'O' || letra == 'U' ) {
                System.out.println("La letra es una vocal");
            } else {
                System.out.println("La letra NO  es una vocal");
            }
            System.out.println("Quiere introducir otro carácter?? (N para salir)");
            letra = leer.nextLine().toUpperCase().charAt(0);
       
         } while (letra !='N');
   
   
    }

viernes, 17 de octubre de 2014

Cálculo del factorial

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package aplicacionfactorial;
import java.util.Scanner;

/**
*
* @author juan
*/
public class AplicacionFactorial {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        int num,fact=1;
        String salida="";
       
        do{
             System.out.println("introduzca el número (mayor que cero)");
             num= leer.nextInt();
             if (num<=0) System.out.println("El número debe ser mayor que cero");
        }while(num<=0);
       
        salida+= num+"!= ";
        for (int i = num; i > 1; i--) {
            fact*=i; //fact = fact*i;
            salida+= i + "*";
        }
       
        salida += "1 = " + fact;
        System.out.println(salida);
          
      
   
    }
}

miércoles, 15 de octubre de 2014

Seudocódigo 7 con función boolean

package seudocodigo7;
import java.util.Scanner;

/**
*
* @author juan
*/
public class Seudocodigo7 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
      
     
        if (esPar(leerNumero())) {
            System.out.println(" es par");
        } else {
            System.out.println(" es impar");
        }
    }
    static int leerNumero(){
        Scanner leer = new Scanner(System.in);
        int num;
   
        System.out.println("Introduzca el número");
        num = leer.nextInt();
        return num;
    }
   
    static boolean esPar(int valor){
        return (valor%2==0);
    }
   
   
}

Pseudocódigo 4 con funciones: leer cantidad, precio e iva

package seudocódigo4;
import java.util.Scanner;
/**
*
* @author juan
*/
public class Seudocódigo4 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        float    cantidad, precio, iva;
        Scanner leer = new Scanner(System.in);
      
        cantidad=leerNum("cantidad");
        precio = leerNum("precio");
        iva = leerNum("iva");

        iva=iva/100;
      
        System.out.println(cantidad*precio*(1+iva));
      
    }
   

Seudocódigo 1: comparar dos números

package pseudocodigo1;
import java.util.Scanner;

/**
*
* @author juan
*/
public class otro {
    public static void main(String[] args) {
        Scanner entrada = new Scanner (System.in);
        int num1, num2,mayor,menor;
     
        //Leo el primer número
        System.out.println("Introduzca un número");
        num1= entrada.nextInt();
     
        //Leo el segundo número
        System.out.println("Introduzca un número");
        num2= entrada.nextInt();
     
        //Los comparo
        if (num1>num2) {
            mayor=num1;
            menor=num2;
        } else {
            mayor=num2;
            menor=num1;
        }
     
        //mostrar resultado
        System.out.println("El mayor es: "+mayor+" el menor, es : "+menor);
     
    }
  

lunes, 13 de octubre de 2014

Empezando con funciones: media de tes números

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package mediadetresnumeros;
import java.util.Scanner;

/**
*
* @author juan
*/
public class MediaDeTresNumeros {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
      
        //float num1,num2,num3;
        float suma=0,mediaVal;
        int numItems=3;
     
        for (int i = 0; i < numItems; i++) {
            suma=suma+leerValor();
        }
     
        mostrar(suma);
//        mediaVal=media(suma,numItems);
        mostrar(media(suma,numItems));
     
 

viernes, 30 de mayo de 2014

Simular tiradas de un dado


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package simulartiradas;


Contar vocales de un cuadro de texto "preparando examen"


package unidad4u352;


public class Vocales {
        String cadena;
       
      
        int vocales[];

    public Vocales(String cadena) {
   

miércoles, 28 de mayo de 2014

Palíndromas en Swing "preparando examen"



/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package unidad4palindromas;

/**
*
* @author juan
*/
public class Ventana extends javax.swing.JFrame {
   
    private boolean palindroma(String miCadena){
 

Cálculo de las potencias de 2 hasta ese número "preparando examen"




/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
* Fuente:
* http://garabatoslinux.net/validacion-de-jtextfield-textfield-numerico-binario-o-solo-letras.html

*/
package unidad4u2e19;

import javax.swing.JOptionPane;

/**
*
* @author juan
*/
public class Potencias extends javax.swing.JFrame {

    /**
     * Creates new form Potencias
 

Interfaz cálculo DNI sencilla "tipo examen"

En un ejemplo real controlad las pulsaciones para permitir sólo dígitos:

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package dni;

import javax.swing.JOptionPane;

/**
*
* @author juan
*/
public class AplicacionDNI extends javax.swing.JFrame {

    public static final String NIF_STRING_ASOCIATION = "TRWAGMYFPDXBNJZSQVHLCKE";

  /**
   * Devuelve un NIF completo a partir de un DNI. Es decir, añade la letra del NIF
   * @param dni dni al que se quiere añadir la letra del NIF
   * @return NIF completo.
   */
  public static String letraDNI(int dni) {
    return String.valueOf(dni) + NIF_STRING_ASOCIATION.charAt(dni % 23);
  }
    /**
     * Creates new form AplicacionDNI
     */
    public AplicacionDNI() {
        initComponents();
    }

viernes, 23 de mayo de 2014

Controles Swing: Botones de radio, casillas verificación, spinner, slider,...

Continuamos viendo el uso de controles Swing en java, para ello hacemos una aplicación muy sencilla que permite modificar el estilo, tamaño y tipo de letra de un área de texto.
La ventana de la aplicación será algo como:

y el código (prestad atención en que alguno de los eventos llaman ya a la función p.e. cambiarTamano pero otros controles tratan el evento directamente,...es lo explicado en clase, todas deberían llamar al método para no estar repitiendo código y tratando lo mismo en veinte sitios ya que dificulta además de la programación el mantenimiento de las aplicaciones):


lunes, 12 de mayo de 2014

Agregando botones gridLayout y clase manejador

Agregamos a una ventana una serie de botones cuyo manejador es la clase manejador. La ventana ha sido creada desde netBeans pero el panel es el genérico.

package cuadradosadivina;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JOptionPane;



Botón con imagen cambiando color de fondo

package explicacionventana;

import java.awt.Color;
import java.awt.Image;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import java.util.Random;

/**
*
* @author juan
*/
public class Ventana extends javax.swing.JFrame {

    /**
     * Creates new form Ventana
     */
    JButton boton1;
    public Ventana() {
        initComponents();
     

viernes, 9 de mayo de 2014

Unidad 4 Ejercicio 8: Usar border layout para cambiar los colores de sus paneles respectivos

 Usar border layout para cambiar los colores de sus paneles respectivos:


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package unidad4ejercicio8;

import java.awt.Color;
import java.util.Random;
import javax.swing.JPanel;

/**
*
* @author Juan
*/

Unidad 4 Ejercicio 10: Diseño de la apariencia de una calculadora

Diseño provisional de la ventana, iremos añadiendo código a lo largo de la semana:



/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package unidad4ejercicio10;

import java.awt.Component;
import java.awt.Font;

/**
*
* @author Juan
*/
public class Calculadora extends javax.swing.JFrame {

 

miércoles, 7 de mayo de 2014

Unidad 4 Ejercicio 5

Repetir el programa anterior, pero utilizando el gestor de diseño GridLayout, definiendo 2 filas y 2 columnas. En la primera fila se incluyen dos JTextField, y en la segunda dos JLabel. Mirar en la ayuda el método setFont, y la clase Font.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package unidad4ejercicio5;

import java.awt.Font;
import java.awt.Image;
import java.text.DecimalFormat;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;


public class VentanaExplica extends javax.swing.JFrame {

    /**
     * Creates new form VentanaExplica
     */
    public VentanaExplica() {
        initComponents();
        txtEuros.setFont(this.getFuenteLetra());

Unidad 4 Ejercicio 4

Hacer un programa que visualice dos campos de texto (JtextField). En el primer campo se puede teclear un valor numérico en euros, que será convertido a pesetas en el segundo campo. Si el valor se teclea en el segundo campo, se convertirá a euros en el primero.
Emplear la clase DecimalFormat para establecer la salida a dos decimales:

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package ejercicio4;

import java.text.DecimalFormat;
import javax.swing.JOptionPane;

/**
*
* @author juan
*/
public class Conversion extends javax.swing.JFrame {

    /**
     * Creates new form Conversion
     */
    public Conversion() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
   

lunes, 5 de mayo de 2014

Convertir a Pesetas

Método que permite convertir a pesetas el texto tecleado en un campo de texto (supuestamente en euros llamado txtEuros). Se podría llamar en el caso del evento ActionPerformed y/o KeyReleased:

private void convAPesetas() {
     double pesetas,euros;
     DecimalFormat formato = new DecimalFormat("######.##");
     if (!txtEuros.getText().equals(""))
        try {
            euros = Double.parseDouble(txtEuros.getText());
            pesetas=euros*166.386;
            txtPesetas.setText(formato.format(pesetas));
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(this, "Los datos introducidos no se pueden convertir a moneda", "Error en la conversión", JOptionPane.ERROR_MESSAGE);
            txtEuros.setText("");
            txtEuros.requestFocus();
        }
    
    
    
    }