Diferencia entre revisiones de «Usuario:ManuelRomero/practica 3»
Línea 20: | Línea 20: | ||
n2 = leer.nextInt(); | n2 = leer.nextInt(); | ||
if (n1> n2) | if (n1> n2) | ||
− | System.out.println( | + | System.out.println(nclass Calculadora{ |
+ | |||
+ | }class Calculadora{ | ||
+ | |||
+ | }class Calculadora{ | ||
+ | |||
+ | }class Calculadora{ | ||
+ | |||
+ | }1 +" "+n2); | ||
else | else | ||
System.out.println(n2 +" "+n1); | System.out.println(n2 +" "+n1); | ||
Línea 463: | Línea 471: | ||
calculo.division() 4/5=0,80 | calculo.division() 4/5=0,80 | ||
calculo.multiplica 4*5=20 | calculo.multiplica 4*5=20 | ||
− | + | <source lang=java> | |
− | + | import java.util.Scanner; | |
+ | public class UsoOrdenar { | ||
+ | public static void main(String []a){ | ||
+ | Calculadora c = new Calculadora (); | ||
+ | boolean seguir = true; | ||
+ | while (seguir == true){ | ||
+ | System.out.println("Dame dos numeros"); | ||
+ | c.setNum1(leer.nextInt()); | ||
+ | c.setNum2(leer.nextInt()); | ||
− | + | System.out.println(c.getNum1()+"+"+c.getNum2+"="+c.sumar()); | |
+ | System.out.println(c.getNum1()+"-"+c.getNum2+"="+c.restar()); | ||
+ | System.out.println(c.getNum1()+"*"+c.getNum2+"="+c.multiplicar()); | ||
+ | System.out.println(c.getNum1()+"/"+c.getNum2+"="+c.dividir()); | ||
+ | System.out.println("Seguir"); | ||
+ | seguir = leer.nextBoolean(); | ||
+ | |||
+ | |||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </source> | ||
==Cuenta corriente== | ==Cuenta corriente== | ||
Realiza una clase llamada | Realiza una clase llamada |
Revisión de 00:37 18 abr 2012
|
Estrucutras secuenciales , condicionales, bucles
Ordernar1
Un programa que me pida dos números y me los visualice ordenados
import java.util.Scanner; class Ordenar1{ public static void main(String []lista){ Scanner leer = new Scanner(System.in); int n1,n2; System.out.println("Inserta dos números a ordenar"); n1 = leer.nextInt(); n2 = leer.nextInt(); if (n1> n2) System.out.println(nclass Calculadora{ }class Calculadora{ }class Calculadora{ }class Calculadora{ }1 +" "+n2); else System.out.println(n2 +" "+n1); }//End main }//End Odenar1
Ordenar2.java
Qué pida tres números y visualice ordenados
import java.util.Scanner; public class Ordena3{ public static void main(String []lista){ Scanner leer = new Scanner(System.in); int n1,n2,n3; //En lugar de sacar tres mensajes sólo uno //y escribilos los tres números separados por espacion System.out.println("Inserta los números a ordenar separados por espacios, al final intro"); n1 = leer.nextInt(); n2 = leer.nextInt(); n3 = leer.nextInt(); //Vamos a dejar en n1 el más grande, en n2 el mediano y en n3 el pequeño //ahora comparamos n2 y n1 y luego n3 y n1, y así en n1 tenemos seguro el mayor if (n2> n1){ int a=n1; n1=n2; n2=a; } if (n3>n1){ int a=n1; n1=n3; n3=a; } //Ahora que tenemos en n1 el mayor dejamos en n2 el mediano if (n3>n2){ int a=n2; n2=n3; n3=a; } System.out.println(n1 +" "+n2+" "+n3); }//End main }//End la clase
Ordena 3 números
Otra forma de hacerlo (hay muhcas más) En este caso en cuanto tenemos los números ordenados lo visualizamos no he puesto llaves dentro de los if-else, ya que solo hay una instrucción en cada uno de ellos
import java.util.Scanner; public class Ordena4 { public static void main(String []lista){ Scanner leer = new Scanner(System.in); int n1,n2,n3; //En lugar de sacar tres mensajes sólo uno y escribilos los tres números separados por espacion System.out.println("Inserta los números a ordenar separados por espacios, al final introoo"); n1 = leer.nextInt(); n2 = leer.nextInt(); n3 = leer.nextInt(); //Vamos a dejar en n1 el más grande, en n2 el mediano y en n3 el pequeño //Ahora vamos visualizando según vayamos encontrando los casos //Tenemos 6 casos posibles de ordenación (factorial del número de elementos a ordenar) System.out.println("n1= "+n1 +" n2= "+n2+" n3= "+n3); if (n1> n2){ if(n2>n3) System.out.println(n3 +" "+n2+" "+n1); else if (n1>n3) System.out.println(n2 +" "+n3+" "+n1); else System.out.println(n2 +" "+n1+" "+n3); else if(n1>n3) System.out.println(n3 +" "+n1+" "+n2); else if (n2>n3) System.out.println(n1 +" "+n3+" "+n2); else System.out.println(n1 +" "+n2+" "+n3); }//End main }//End la clase
OrdenarNombre
Que me pida dos nombres y los visualice ordenados
import java.util.Scanner; public class Nombres { public static void main(String[] args) { String n1,n2; Scanner l1=new Scanner(System.in); System.out.println("Inserta un nombre"); n1=l1.nextLine(); System.out.println("Inserta otro nombre"); n2=l1.nextLine(); if (n1.compareTo(n2)<0) System.out.println(n1+" - "+n2); else System.out.println(n2+" - "+n1); } }
Tabla de multiplicar
- Te pide un número y visualizas la tabla de multiplicar
- Iteramos hasta que inserten 0 como tabla a visualizar
- Observar que se puede concatenar como un string el resultado de una operacion aritmética
System.out.println(tabla+"*"+i+"="+(tabla*i)); tabla*i es una operacion, y se concatena el resultado
import java.util.Scanner; public class Multiplicar { public static void main(String []l){ int tabla; Scanner leer = new Scanner(System.in); System.out.println("Inserta un número para obtener la tabla (0 terminar)"); tabla=leer.nextInt(); while (tabla!=0){ for (int i=1;i<=10;i++) System.out.println(tabla+"*"+i+"="+(tabla*i)); System.out.println("Inserta un número para obtener la tabla (0 terminar)"); tabla=leer.nextInt(); }//end while }//End main }//End clase
Grados
Un programa que me pida grados centígrados y los viualiza en Farhenheit y en Kelving. la equivalencia es la siguiente
- centígrados 0 100
- Fahrenheit 32 212
- Kelvin 273 373
import java.util.Scanner; public class Grados { public static void main(String[] args) { Scanner leer = new Scanner(System.in); float centigrados; System.out.println("Dame grados Centígrados"); centigrados= leer.nextFloat(); //Informo en Fahrenheit de los grados centrígrados //C-F (180/100 y +32) F-C ( -32 y 100/180) System.out.println(centigrados+" C = "+(centigrados*1.8+32)+" Fahrenheit y "+(centigrados+273)+" Kelvin" ); } }
cuenta pares e impares
- Introducimos 10 números y me dicen cuantos hay pares y cuantos impares
- Solo utilizamos contamos los pares.
- El número de impares lo obtenemos como 10-numero de pares
import java.util.Scanner; public class CuentaPares { public static void main(String []l){ Scanner leer = new Scanner(System.in); int numero; int cuentaPares=0; for (int i=0; i<10;i++){ System.out.println("Inserta un número "); numero = leer.nextInt(); if (numero%2==0) cuentaPares++; }//End for System.out.println("Has insertado "+cuentaPares+" numeros pares y "+(10-cuentaPares)+" numeros impares"); }//End main }//End clase
dígitos
Dado un número entero, que me diga cuantos dígitos tiene (cuantas veces es divisible por 10…
class Digitos{ }
medias
Que me pida números hasta que introduzca el 0 y me calcule la media, el mayor y el menor de la lista de números insertados
class Medias{ }
Valida fecha
Que le introduzca una fecha (tres enteros: dia, mes y año) y me indique si la fecha es o no correcta. En caso de que no sea correcta que me diga por qué motivo no lo es
class ValidaFecha{ }
primo
Que introduzca un número y me diga si es o no primo
class Primo{ }
Ecuación de 2º grado
- dada una ecuación de segundo grado del tipo ax2 + bx + c = 0
- donde a, b y c son coeficientes numéricos que se introducirán al programa,
- encontrar valores que satisfagan el valor de x. La ecuación que me da los valores es (-b±√(b^2-4*a*c))/(2*a)
- Observamos que si la parte del radicando es negativa no se puede hacer la raíz.
- si a es 0 en realidad estamos ante una ecuación de primer grado bx+c=0 donde x =(-c)⁄b
- En el caso del radicando negativo puedes decir que no hay solución o dar solución acudiendo a los números complejos √(-n)=√n*√(-1)=√n*i
class Ecuacon2Grado{ }
Factores
Descomponer un número en sus factores p.e 56 =2*2*2*7
class Factores{ }
Nomina
- Un programa que realice nóminas siguiendo las siguientes especificaciones, ya realizado en clase:
- Por el teclado se introducen: Horas, precio hora y Nombre y número de hijos
- Cuando el nº de horas semanales trabajadas es <= 40 se consideran horas normales.
- Entre 40 y 50 horas son extraordinarias.
- Más de 50 horas se consideran especiales
- Las horas extras se pagan a 1.5 las normales.
- Las horas especiales se pagan a 1.80 veces las normales
- Los impuestos se pagan de acuerdo con:
- Si el sueldo es <= 600 euros está libre de impuestos para la mayoría de los casos.
- Los 100 euros siguientes cotizan el 15%.
- El resto 25%
- Sólo si te sientes cómodo y cuando la parte anterior funciones, puede probar a añadir a tu software este nuevo requisito
- Los porcentajes con número de hijos se modifican de la siguiente manera
- Por cada hijo 15% menos (al porcentaje, no al total). El máximo que se puede descontar es el total de los impuestos a tratar
class Nomina{
}
Arrays nombres
Inserto hasta diez nombres y los voy colocando de forma ordenada. Al final se visualizan los nombres ordenados
import java.util.Scanner; public class ArrayOrdenado { // Defino la función buscarPosción que me dice la posicion //que le corresponde a un nombre n en un array de nombres l donde tengo longitud nombres public static int buscarPosicion(String n, String[] l, int longitud){ boolean encontrado=false; int pos =0; while((encontrado==false) && (pos <longitud)) if (l[pos].compareTo(n)>0) encontrado=true; else pos++; return pos; }//Fin de buscarPosición public static void main (String []lista){ String[] listaNombres = new String[10]; Scanner leer = new Scanner(System.in); String nombre; //Voy a pedir 10 nombres y cada nombre lo coloco ordenadamente en el vector //Tener cuidado que diferencia mayúsculas de minúsculas for (int i=0; i<10;i++){ System.out.println("Inserta un nombre"); nombre=leer.next(); int pos = buscarPosicion(nombre, listaNombres,i); //Visualiza es simplemente para ir viendo las cosas según la va haciendo, se puede quitar visualiza (listaNombres,nombre,i); //Una vez que he encontrado la posición del nombre en el vector, lo coloco //Y muevo todos los nombres una posición ayudado por un auxiliar for (int a = pos; a<=i; a++){ String aux = listaNombres[a]; listaNombres[a]=nombre; nombre = aux; } }//End for //Ahora visualizo el vector ordenado System.out.println("Vector ordenado"); for (int i=0; i<10;i++){ System.out.println(listaNombres[i]); } }//End main public static void visualiza(String[]l,String n, int i){ System.out.println("Buscando "+n+" en el vector "); for (int a = 0; a<i;a++) System.out.print(l[a]+"-"); }//End visualiza }//End de la clase
Adivina numero
- el sistema generará un número de 1 a 100 o a 1000
- te deja un número de intentos para adivinarlo
- cada vez que digas un número te dirá si es mayor o menor y número de intentos que llevas.
- Al final o lo has adivinado o has agotado el número de intentos
Para ejemplo vemos el siguiente programa que genera numéros 1 1 a 100
import java.util.Random; public class Programa{ public static void main(String arg[]) { int a; Random rnd = new Random(); for (int i=0;i<10;i++){ a = 1+(int)(rnd.nextDouble() * 100); System.out.println("Valor de a "+a); } } }
Un posible código del programa
import java.util.Random; import java.util.Scanner; public class Adivina { public static void main(String arg[]) { //Defino variables int numeroAdivinar; int intentos=0; int numeroUsuario; Scanner leer = new Scanner(System.in); //Inicializo la semilla; Random rnd = new Random(); System.out.println("Vamos a ver si adivinas un número entre 1 y 1000"); System.out.println("Tienes 10 intentos"); //Genero el número aleatorio emtre 1 y 10 numeroAdivinar = 1+(int)(rnd.nextDouble() * 100); //Iteraciones hasta que encuentre el número o agote intentos do{ System.out.println("Te quedan "+(10-intentos)+" intentos de los 10 iniciales para adivinar el número "); numeroUsuario=leer.nextInt(); if (numeroUsuario<numeroAdivinar) System.out.println("El número es mayor"); if (numeroUsuario>numeroAdivinar) System.out.println("El número es menor"); intentos++; }while ((numeroUsuario!=numeroAdivinar) &&(intentos<10)); //Informo del resultado if (numeroUsuario==numeroAdivinar) System.out.println("Has adivinado el número en "+ intentos+" intentos"); else System.out.println("No lo Has adivinado. el número era "+ numeroAdivinar); }//end main }//End clase
Generado de password
Programa de generador aleatorio de password (debe generar password de 8 caracteres y tienen que contener entre 4 y 6 números entre 2 y 3 letras y 0 o 2 carecteres especiales ” ¡@#%$_|?¿” La clave generada que la visualice por patalla usando showMessageBox, después aparecerá una patalla para cambiarla, me pedirá que la introduzca 2 veces y luego me permitirá introducir la nueva, al final me informará de clave cambiada correctamente.
import java.util.Random; public class Password { //Atributos de la clase = Variables globales para todos los //métodos static Random generador = new Random(); /* * Rellena el vector de password con 'num' números * a partir de la posicion posIni * @param p Array de caracteres que contiene la password * @param num numero de caracteres letraselegidos al hazar * de un vector de caracteres especiales * @param posIni posición a partir de la cual relleno el vector */ public static void rellenaNumeros(char []p,int num, int posIni){ for (int i=posIni;i<(num+posIni); i++){ int n = generador.nextInt(10); p[i]=Character.forDigit(n,10); } }//End rellenaNumeros /* * Rellena el vector de password con 'num' letras * a partir de la posicion posIni * @param p Array de caracteres que contiene la password * @param num numero de caracteres letraselegidos al hazar * de un vector de caracteres especiales * @param posIni posición a partir de la cual relleno el vector */ public static void rellenaLetras(char []p,int num, int posIni){ for(int i=posIni;i<(num+posIni);i++){ int n = generador.nextInt(52); if (n<26) //letras mayúsculas A..Z p[i]=(char)((int)'A'+n); else p[i]=(char)((int)'a'+(n-26)); } }//End rellenaLetras /* * Rellena el vector de password con 'num' caracteres especiales * a partir de la posicion posIni * @param p Array de caracteres que contiene la password * @param num numero de caractres especiales elegidos al hazar * de un vector de caracteres especiales * @param posIni posición a partir de la cual relleno el vector */ public static void rellenaEspeciales(char []p,int num, int posIni){ char[]esp= {'!','$','@','?','¿','%','*','Ç','-'}; //Tenemos 9 caracteres. generamos un valor 0.8 y tomo ese caracter for(int i=posIni;i<(num+posIni);i++){ int n = generador.nextInt(9); p[i]= esp[n]; } }//End rellenaEspeciales //Definimos un vector de caracteres public static void main (String []l){ int numLetras; int numNumeros; int numEspeciales; char []pass = new char[8]; //Generamos número de caracteres de cada tipo numNumeros=4+generador.nextInt(3);//(valor entre 4 y 6) if (numNumeros == 6) numLetras = 2; else numLetras =2+generador.nextInt(2);//(valor entre 2 y 3) numEspeciales =8-(numLetras+numNumeros); rellenaNumeros(pass,numNumeros,0); rellenaLetras(pass,numLetras,numNumeros); rellenaEspeciales(pass,numEspeciales,numNumeros+numLetras); //Visualizo el resultado System.out.print("Password: "); for (int i=0; i<8;i++){ System.out.print(pass[i]); } }//Fin del main }//Fin de la clase
Clases
una clase llamada calculadora con dos números y que haga suma restas divisiones y multiplicaciones. Las operaciones igual de las vistas con el racional operan con los números del objeto.
Calculadora calculo = new Calculadora (4,5); calculo.sumar() 4+5=9; calculo.resta() 4-5=-1 calculo.division() 4/5=0,80 calculo.multiplica 4*5=20
import java.util.Scanner; public class UsoOrdenar { public static void main(String []a){ Calculadora c = new Calculadora (); boolean seguir = true; while (seguir == true){ System.out.println("Dame dos numeros"); c.setNum1(leer.nextInt()); c.setNum2(leer.nextInt()); System.out.println(c.getNum1()+"+"+c.getNum2+"="+c.sumar()); System.out.println(c.getNum1()+"-"+c.getNum2+"="+c.restar()); System.out.println(c.getNum1()+"*"+c.getNum2+"="+c.multiplicar()); System.out.println(c.getNum1()+"/"+c.getNum2+"="+c.dividir()); System.out.println("Seguir"); seguir = leer.nextBoolean(); } } }
Cuenta corriente
Realiza una clase llamada
public class CuentaBancaria
tendrá tres atributos (saldo, totalCuentas (static), riesgo (static, cantidad de dinero que se permite en estas cuentas)
private double saldo; public static int totalCuentas=0; private double riesgo ; //Cantidad de dinero que puede haber en número negativos
Ene el constructor
inicializamos las variables saldo =riesgo=0, numCuentas =1 opcionalmente se puede pasar saldo o saldo y riesgo
Tendremos implementados los siguientes métodos
public double saldo() public void ingreso(floata cantidad) public void extracion(floata cantidad) /Validamos el sueldo /riesgo public static void incCuentas () public void transferencia( CuentaBancaria origen, float cantidda ) En caso de que haya saldo pasaremos dinero de una cuenta a otra
Realizar un programa principal que use esta clase
creamos 4 cuentas hacemos ingresos y reintegros realizamos al menos 2 transferenicas una permitida y otra no realizamos un ingreso para que nos la permita hacer. comprobar el valor de número de cuentas.
Siwng
Un programa que usando en el BorderLayout y que ponga los siguientes objetos norte 2 Label en forma de flowlayout Centro poner 5 botones con un BorderLayout Este 1 caja de texto Oeste 1 caja de texto Sur 4 botones FlowLayout La ventana que aparezca maximizada Que no se puede redimensionar Poner un título Que no se pueda cerrar
class { }
Swing y eventos
hacer el programa de cambio de grados de forma gráfica class eventos
El juego del ahorcado