viernes, 9 de agosto de 2013

Clases de uso General - HashTable / HashSet / HashMap


Desarrollar un programa que permita gestionar una especie de base de datos de
productos, donde cada producto tendrá un precio y un código asociado. El
programa mostrará el siguiente menú:

1- Introducir producto
2- Modificar precio
3- Mostrar precio medio
4- Eliminar producto
5- Salir

La opción 1 nos pedirá el código y el precio del producto que queremos guardar.
Si ya existiera ese código nos mostrará un mensaje de advertencia y no hará
nada, volviendo a mostrar de nuevo el menú. La opción 2 nos pedirá el código del
producto a modificar y, caso de que exista, el nuevo precio del mismo. Si el
producto no existe no se realizará la sustitución y se mostrará un mensaje de
advertencia. La opción 3 mostrará la media de todos los precios existentes. La
opción 4 solicitará el código del producto y lo eliminará, pero si no existiera nos
mostrará un mensaje de advertencia.

/**
 * @author Vogues
 */

import java.util.*;
import java.io.IOException;

public class Ej5 {
    public static void main(String[] args) throws IOException{
        HashMap<String, Double> lista= new HashMap<String, Double>();
        //Atributos pidiendo datos por teclado
        int opcion;
        Scanner sc= new Scanner(System.in);
        //Creamos un patron que en este caso sea \n
        sc.useDelimiter("\n");
     
        do{
            System.out.println("\nElige la opcion que desees");
            System.out.println("\n1. Introducir producto");
            System.out.println("2. Modificar precio producto");
            System.out.println("3. Mostrar precio medio");
            System.out.println("4. Eliminar producto");
            System.out.println("5. Salir \n");
            System.out.println("-----------------------");
            opcion=sc.nextInt();//Guardamos en opcion el valor por teclado
            String item;//variables
            Double precio;
                 
         
            switch(opcion){
                case 1:
                    System.out.println("Introduce producto: ");
                    item=sc.next(); //Guarda dato tipo String
                    System.out.println("Introduce el precio del producto");
                    precio=sc.nextDouble();//Guarda dato tipo Double
                    guardarProducto(item, precio, lista);//Llama metodo
                    //con atributos (String, Double, nombre HashMap)
                    break;
                 
                case 2:
                    System.out.println("Introduce el producto a modificar: ");
                    item=sc.next();
                    modificaProducto(item, lista);
                    break;
                 
                case 3:
                    mediaProducto(lista);
                    break;
                 
                case 4:
                    System.out.println("Introduce el producto a eliminar : ");
                    item=sc.next();
                    eliminarProducto(item, lista);
                    break;
                 
                case 5:
                    break;   // Si la opcion es 5 no se hace nada
                    default:
                        System.out.println("Introduce una opción valida");
            }
         
        }while(opcion!=5);
    }      
     
        public static void guardarProducto(String valor, Double coste, HashMap<String, Double> lista){
             if (lista.containsKey(valor)){
                System.out.println("No se puede introducir el producto. El código esta repetido.");
             }
             else{
                lista.put(valor, coste);            
            }
         }
                     
        public static void modificaProducto(String valor, HashMap<String, Double> lista){
             Scanner sc = new Scanner(System.in);
                if (lista.containsKey(valor)){
                    System.out.println("Introduce el precio del producto:");
                    lista.put(valor, sc.nextDouble());          
                }
                    else{
                        System.out.println("No hay ningun producto con ese código.");
                        }
                }
                       
         public static void mediaProducto(HashMap<String, Double> lista){
                double media=0.0;
                for(Object me: lista.values()){
                    media+=((Double) me).doubleValue();              
                }
                media/=lista.size();
                System.out.println("Precio medio: "+media);
         }

         public static void eliminarProducto(String valor, HashMap<String, Double> lista){
            if (lista.containsKey(valor)){
            lista.remove(valor);
            }
            else{
            System.out.println("No hay ningun producto con ese código.");
            }    
         }      
   
}


 

miércoles, 7 de agosto de 2013

Clases uso General - Introducir números por teclado y después sumarlos todos.


Realizar un programa que permita solicite la introducción de números por teclado.
Se pedirá al usuario que introduzca un número y a continuación que introduzca
otro, así sucesivamente hasta que introduzca un número negativo (que ya no será
tenido en cuenta). Después, el programa mostrará en pantalla todos los números
ordenados de menor a mayor.

/**
 * @author Vogues
 */

import java.io.*;
import java.util.Scanner;

public class Ej4 {
      public static void main(String[] args) throws IOException{
       
        //Atributos
        Scanner teclado=new Scanner(System.in);
        int suma,valor;
        suma=0;
     
        //Bucle para verificar si el numero ingresado por el usuario es >=0
        do {
            System.out.print("Ingrese un valor:");
            //Guarda en la variable valor el dato introducido por teclado
            valor=teclado.nextInt();

            if (valor>=0) {
                suma=suma+valor; //secuencia de sumado
            }
        }while (valor>=0);
     
        //Si el valor introducido es <0 sale del bucle
        //y suma todos los datos introducidos sin contar el dato negativo

        System.out.print("La suma total es: ");
        System.out.println(suma);
     
    }
}



Clases uso General - Eliminar texto de una cadena de caracteres

Desarrollar un programa que solicite la introducción de un texto y, a continuación,
la introducción de una palabra. Seguidamente, el programa eliminará del primer
texto todas las ocurrencias existentes de la palabra introducida en segundo lugar,
mostrando en pantalla el texto resultante de realizar dicha extracción. Por ejemplo,
si el texto es “Esta cadena de caracteres de prueba” y la palabra es “de”, el
resultado será “Esta cadena caracteres prueba”.

/**
 *
 * @author Vogues
 */

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;

public class Ej3 {
        public static void main(String[] args) throws IOException{
     
        //Atributos con un Scaner(System.in) para guardar los datos introducidos
        //por el usuario  
        Scanner frase=new Scanner(System.in);
        String p1="";
        String p2="";
   
            //Pide al usuario un String y lo guarda en formato Buffered
            System.out.println("Ingrese la cadena: ");
            BufferedReader br= null;
            br = new BufferedReader(new InputStreamReader(System.in));
            p1=br.readLine();
         
            //Pide al usuario el texto de la cadena a eliminar
            System.out.println("Ingrese texto a eliminar: ");
            BufferedReader bp= null;
            bp = new BufferedReader(new InputStreamReader(System.in));
            p2=bp.readLine();
                     
            //Usamos replaceAll para eliminar el texto exacto.
            //Se entiende eliminar como cambiar texto por un "" (Espacio blanco)
            //En caso de solo usar replace, cambiaremos todas las letras que
            //contiene la cadena
                               
            System.out.println("La frase resultante es: \n" +p1.replaceAll(p2,"") );
             }
 
}



Clases de uso General - Solicitar Cadena de caracteres e invertirla.

Desarrollar un programa que solicite una cadena de caracteres por teclado y nos
muestre dicha cadena con los caracteres invertidos

/**
 * @author Vogues
 */

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;

public class Ej2 {
    public static void main(String[] args) throws IOException{
        Scanner frase=new Scanner(System.in);
        String p1="";
        String p2="";
   
         
            System.out.println("Ingrese la frase: ");
            BufferedReader br= null;
            br = new BufferedReader(new InputStreamReader(System.in));
            p1=br.readLine();
         
                for(int i=p1.length() -1;i>=0;i--)
                    p2=p2+p1.charAt(i);
         
            System.out.println("La frase a la inversa es: \n" +p2 );
           
     }
}



Clases de uso general - Random ()

Desarrollar un programa que al ejecutarse genere y muestre en pantalla la
combinación de la lotería primitiva (seis números aleatorios diferentes entre 1 y 49)

/**
  * @author Vogues
 */

import java.io.IOException;
public class Ej1 {
    public static void main(String[] args) throws IOException{
       //IOException evita que nos genere errores

        //atributos
        int vector[] = new int[5];
        int i = 1, j;

        //Queremos un valor aleatorio iniciado en 1 y max 49
        vector[i] = (int) (Math.random() * (49) + 1);
     
        //recorremos el vector 5 veces.
        //ya que son los numeros aleatorios que quiero que muestre
     
        for (i = 0; i < 5; i++) {
            vector[i] =(int)(Math.random()*(49) + 1);
     
        //Con esto eliminamos la provavilidad de que saldan numeros repetidos.
            for (j = 0; j < i; j++) {
                if (vector[i] == vector[j]) {
                    i--;
                }
            }
        }
        //Imprimimos los numeros aleatorios
        for (i = 0; i < 5; i++) {
            System.out.println(vector[i]);
        }
    }
}


Clases uso General - Autoevaluación


1. ¿Cuál de los siguientes métodos se utiliza para convertir una cadena de texto
numérica en un número entero?:
A. intValue()
B. valueOf()
C. parseInt()
D. setInt()


2. Indica cuál de las siguientes instrucciones de creación de objetos es incorrecta:
A. String s = new String (“cadena”);
B. Scanner sc = new Scanner (System.in);
C. Math m = new Math();
D. String cad = “otra cadena”;


3. Si tenemos que crear una colección de objetos donde el único requerimiento es
que los objetos no puedan repetirse, la clase más adecuada para la
implementación de la colección sería:
A. ArrayList
B. Hashtable
C. Vector
D. HashSet


4. Tenemos una clase llamada Operaciones en la que queremos incluir un
constructor que permita crear objetos de dicha clase desde cualquier parte.
Además, el constructor recibirá como parámetro un valor entero que permita
inicializar un atributo de la clase. La sintaxis correcta para la creación del
constructor sería
A. public Operaciones (int dato)
B. public void Operaciones (int dato)
C. Operaciones (int dato)
D. public new (int dato)


5. Al ejecutar el siguiente código
StringBuilder sb1 = new StringBuilder(“hola”);
StringBuilder sb2 = sb1;
sb2.append(“adios”);
System.out.println(sb1.toString());
¿Qué resultado se mostrará en pantalla?
A. holaadios
B. hola
C. Se producirá una excepción en la tercera instrucción
D. Se mostrará una cadena vacía


6. Para importar los miembros estáticos de una clase llamada “Clase1” existente en
un paquete llamado “paquete1” deberíamos utilizar:
A. static import paquete1.*;
B. import paquete1.static.Clase1;
C. import static paquete1.Clase1;
D. import static paquete1.Clase1.*;


7. Al ejecutar el siguiente código
ArrayList<String> l1 = new ArrayList<String>();
l1.add(“hola”);
l1.add(200);
Integer t = l1.get(1);
System.out.println(t.toString());
¿Qué resultado se mostrará en pantalla?
A. 200
B. Se producirá un error de compilación en la línea 3
C. Se producirá una excepción en la línea 4
D. Se producirá una excepción en la línea 5


8. Queremos almacenar en una colección basada en claves una serie de objetos
pertenecientes a una clase llamada Libro a los que queremos asociar como dato
clave si ISBN que es un tipo de dato String:
¿Cuál de las siguientes instrucciones sería la más apropiada para crear la
instancia de la colección?:
A. Hashtable tabla=new Hashtable();
B. Hashtable<String, Libro> tabla=new Hashtable<String, Libro>();
C. Hashtable<String, String> tabla=new Hashtable<String, String>();
D. Hashtable tabla=new Hashtable(String, Libro);



Fundamentos Java - Recoger argumentos

//*
* @author Vogues
*/

Desarrollar un programa que recoja un número recibido como argumento del
método main y muestre un mensaje del grado de satisfacción según la siguiente
tabla:

1- Muy insatisfecho
2- Insatisfecho
3- Normal
4- Satisfecho
5- Muy satisfecho
Si el valor numérico no coincide con ninguno de los anteriores se mostrará un
mensaje de error.
 *
 *
 *  METODO PARA RECOGER ARGUMENTOS
 *  for(String argumento: args) {
            System.out.println("Hola " + argumento); }        
 *
 */
public class NombreClase {
 
   public static void main(String[]args) {
 
        int[] v = new int[5];
 
        for (int i=0; i<args.length; i++) //cambiamos el String a numero.
        v[i] = Integer.parseInt(args[i]);
     
        for(int i=0;i<args.length;i++)
        {
            switch (v[i]){

                case 1:
                    System.out.println("Muy insatisfecho");
                break;

                case 2:
                    System.out.println("Insatisfecho");
                break;

                case 3:
                    System.out.println("Normal");
                break;
             
                case 4:
                    System.out.println("Satisfecho");
                break;
                 
                case 5:
                    System.out.println("Muy satisfecho");
                break;
         
                default:
                    System.out.println("Error");
                break;
            }    
        }
   }
}


Fundamentos Java - Suma de todos los números consecutivos


Desarrollar un programa que a partir de un determinado número, vaya realizando
la suma de todos los números consecutivos a dicho número. El proceso finalizará
en el momento en que la suma alcance o supere al valor 100, mostrándose el
total.

 //*
 * @author Vogues
 */

public class NombreClase{

    public static void main (String []args)
    {
        //declaramos el numero a introducir
        int suma=15;
        int count=0;
     
        //inicializamos
        for(int i=suma;i<100;i++)
            {
                if(suma<100)
                    {
                        suma=suma+i;    
                        System.out.println(i);
                        count++;
                    }
            }
     
        System.out.println("La suma de todos los numeros es: "+suma);
        System.out.println("Se han sumado ["+count+ "] Numeros");
     
    }
}
 

Fundamentos Java - Ordenar numeros Mayor Menor


Desarrollar un programa que recoja todos los números introducidos como
argumentos desde la linea de comandos y los muestre en pantalla ordenados de
menor a mayor.

//*
 * @author Vogues
 */

public class NombreClase{

    public static void main(String[]args)
    {
        //declaramos variables
           
        //Usamos metodo para introducir argumentos en vez de Netbeans>Proyect>properties>run>args
                String [] numeros = {"1", "7",  "10", "5", "13", "22", "2"};
                int[] v = new int[7];
 
       
        for (int i=0; i<numeros.length; i++) //cambiamos el String a numero.
        v[i] = Integer.parseInt(numeros[i]);
     
         //Incializaemos
           
                int j,i, aux;

        // Ordenación
              
        System.out.println("Arreglo ordenado de menor a Mayor: \n");
                for(i=0; i<7; i++) {
                // Comparaciones
                for(j=0; j<6-i; j++){
           
// Intercambiar los elementos
         
                if(v[j] > v[j+1]) {
aux=v[j];
v[j]=v[j+1];
v[j+1]=aux;
            }
}     
                      System.out.println(v[j]);

        }
    }
}


Fundamentos Java - Numeros Primos


 Desarrollar un programa que dado un número nos indique si este o no primo

//*
 * @author Vogues
 */

public class NombreClase{
   
    public static void main(String[] args){
           
            System.out.println("Segundo Ejercicio");
           
            //Atributos

            int n=0; //variable
            int x=1; //divisor
            int num=5; //numero a calcular
         
         
            do  
                {  
                    if(num%x==0)
                        {                
                            n=n+1;  //Si el resultado al dividir da resto 0
                                         //sumamos 1 a la variable */
                        }
                            x=x+1;  // Dividimos el numero tantas veces como
                                         // numeros haya haya el numero a calcular.
                                         // 5 /1 5/2 5/3 5/4 5/5
                                         // Al ser x <= al num a calcular llamar
                                         // a la fucion while.
                }  
         
            while(x<=num);
         
            if(n==2) //Primo lo calculo sabiendo que:
                          //Es el resultado de dos divisiones con valor cero
                          //Primo solo  es divisible por él mismo y uno
                          //Si hay más de 2 divisiones con residuo "0" No es primo
                {
                   System.out.println("ES PRIMO");
                }
            else
                {
                    System.out.println("NO ES PRIMO");
                }

    }
}


Fundamentos Java - Dividir Num Mayor menor

Desarrollar un programa que muestre el resultado de dividir el mayor entre el
menor de dos números dados


//*
 * @author Vogues
 */

public class NombreClase{
     public static void main (String []args)
        {
            double num1=9; 
            double num2=4;
            double resultado;
                        
                System.out.println("Primer numero= "+num1 +"\n" +"Segundo numero="+num2+" \n\n");
            
                   if(num1<num2)
                    {
                        resultado=(num2/ num1);
                        System.out.println("La division es "+resultado);
                                
                    }else
                   { 
                        resultado=(num1/num2);
                        System.out.println("La division es "+resultado);
                   }
        }
}



FUNDAMENTOS JAVA - Autoevaluación


1. ¿Cuál de los siguientes literales puede asignarse directamente a una variable de
tipo  float sin necesidad de realizar ningún tipo de conversión explícita?:
A. true
B. 25
C. 4.34
D. “4.6”


2. La Máquina Virtual Java es:
A. Un compilador de programas Java
B. Un entorno de desarrollo integrado (IDE)
C. Un software que permite la ejecución de programas Java
D. Un sistema operativo para Java


3. Para compilar una clase Java desde la línea de comandos se debe emplear la
utilidad:
A. java.exe
B. com.exe
C. path.exe
D. javac.exe


4. Para comprobar que el contenido de una variable numérica entera (valor) este
dentro del rango de 1 a 20, ambos extremos incluidos, deberíamos utilizar la
instrucción:
A. if(valor>=1||valor>=20)
B. if(valor>=1&&valor<=20)
C. if(valor<=1&&valor>=20)
D. if(valor<0||valor>=20)


5. Al ejecutar el siguiente código
int a=10;
switch(a){
case 5:
System.out.println(“Número 5”);
break;
case 10:
System.out.println(“Número 10”);
default:
System.out.println(“Número”);
}
¿Qué resultado se mostrará en pantalla?
A. Número 10
B. Número 5
Número 10
Número
C. Número 10
Número
D. Número 5
Número


6. ¿Cuál de los siguientes bloques de instrucciones permitiría mostrar correctamente
en pantalla los argumentos introducidos por la línea de comandos?:
A. for (int i=1;i<=args.length;i++){System.out.println(args[i]);}
B. for (int i:args[]){System.out.println(args[i]);}
C. for (int i:args.length) {System.out.println(args[i]);}
D. for (String s:args) {System.out.println(s);}


7. Indica cual de las siguientes formas de declarar/construir un array es incorrecta::
A. int [] p = new int[10];
B. int k [] = {7, 8, 9, 10}
C. float [][] n = new float [10][];
D. String [10] s;


8. Dada la siguiente instrucción:
int num = 1000;
Indica cual de las siguientes operaciones generaría un error durante la fase de
COMPILACIÓN:
A. boolean s = (boolean)num;
B. float n = num;
C. char c =(char)num;
D. byte b = (byte)num;