Java básico 047. Función, potencia de (a^n) utilizando recursividad.

Ejercicio: Desarrolla una función recursiva que calcule (a^n).
Código Java
import java.util.Scanner;

/**
*
* @author Ariel
*/

public class RecurPotencia {

/**
* @param args the command line arguments
*/

public static void main(String[] args) {
int result, a, n;
Scanner num = new Scanner(System.in);
System.out.print("Ingresa la base (a): ");
a = num.nextInt();
System.out.print("Ingresa la potencia (n): ");
n = num.nextInt();
result = potencia(a, n);
System.out.println("El resultado de " + a + " exp " + n + " = " + result);
}
static int potencia(int a, int n){
int result;
if(n == 0){
result = 1;
}
else{
// caso recursivo: a^n = a *a^n-1
result = a * potencia(a, n - 1);
}
return result;
}
}

Java básico 046. Función, calculando seno, coseno y tangente.

Ejercicio: Dado el valor de un ángulo, sería interesante saber su seno, coseno y tangente. Escribir una función que muestre en pantalla los datos anteriores.
Código Java
import java.util.Scanner;

/**
*
* @author Ariel
*/

public class FuncionSCT {

/**
* @param args the command line arguments
*/

public static void main(String[] args) {
double a;
Scanner num = new Scanner(System.in);
try {
System.out.print("Introduce un ángulo de (0...360°): ");
a = num.nextDouble();
anguloCal(a);
} catch (Exception e) {
System.out.println("ERROR: Datos incorrectos.");
}
}
static void anguloCal(double a){
//Primer punto, pasa "a" a radianes.
double b = Math.toRadians(a);
System.out.println("Seno de " + a + " es: " + Math.sin(b) );
System.out.println("Coseno de " + a + " es: " + Math.cos(b) );
System.out.println("Tangente de " + a + " es: " + Math.tan(b) );
}
}

Java básico 045. Función conversión a binario.

Ejercicio: Desarrolla una función que muestre en binario un número entre 0 y 255.
Código Java
import java.util.Scanner;

/**
*
* @author Ariel
*/

public class BinarioNum {

/**
* @param args the command line arguments
*/

public static void main(String[] args) {
int num;
Scanner numero = new Scanner(System.in);
System.out.print("Ingresa un número entre 0 y 255: ");
num = numero.nextInt();
try {
int[] binario = binario(num);
System.out.print("El binario de " + num + " es: " );
for (int i = binario.length - 1; i >= 0; i--) {
int j = binario[i];
System.out.print(j);
}
System.out.println();
} catch (Exception e) {
System.out.println("ERROR: Número fuera de rango.");
}

}
static int[] binario(int a){
int binario[];
if(a > 0 && a <= 255){
int cont = 0;
int var = a;
while (var != 0) {
var = var/2;
cont ++;
}
binario = new int[cont];
int t =0;
while (a != 0) {
binario[t] = a%2;
a = a/2;
t++;
}
return binario;
}
return null;
}
}

Java básico 044. Ejercicio utilizando Función más retorno. Potencia de a exp n.

Ejercicio: Desarrolla una función que permite calcular “a” elevado a “n” potencia.
Código Java

import java.util.Scanner;

/**
*
* @author Ariel
*/

public class PotenciaN {

/**
* @param args the command line arguments
*/

public static void main(String[] args) {
int numA , numB;
Scanner num = new Scanner(System.in);
System.out.print("Ingresa la base: ");
numA = num.nextInt();
System.out.print("Ingresa el exponente: ");
numB = num.nextInt();
System.out.println("Calculando potencia de " + numA + " exp " + numB);
long potencia = potencia(numA, numB);
System.out.println(numA + " elevado a " + numB + " = " + potencia );
}
static long potencia(int a, int n){
long res = 0;
if(a == 0 && n == 0){
System.out.println("No hay valor para mostrar.");
}
else{
if(n == 0){
res = 1;
}
else{
res = 1;
for (int i = 1; i <= n; i++) {
res= res * a;
}
}
}
return res;
}
}

Java básico 043. Ejercicio utilizando Función más retorno.

Ejercicio: Función a la que se le pasan dos enteros y muestra todos los números comprendidos entre ellos, inclusive.
Código Java

import java.util.Scanner;

/**
*
* @author Ariel
*/

public class MayorNN {

/**
* @param args the command line arguments
*/

public static void main(String[] args) {
int numA, numB;
Scanner num = new Scanner(System.in);
System.out.print("Ingresa el primer valor: ");
numA = num.nextInt();
System.out.print("Ingresa el segundo Valor: ");
numB = num.nextInt();
System.out.println("Imprimiendo valores.");
numeros(numA, numB);
}
static void numeros(int a, int b){
int mayor = 0, menor = 0;
if(a == b){
System.out.println("Datos iguales.");
}
else{
if(a > b){
mayor = a;
menor = b;
}
else{
mayor = b;
menor = a;
}
}
for (int i = menor; i <= mayor; i++) {
System.out.print(i + " ");
}

}
}

Java + Swing 014. Modo diseño en NetBeans. Rellenar tabla utilizando ArrayList.

Ejercicio: Realizar una pequeña aplicación que nos permite rellenar una tabla con datos almacenados en una lista.
Creando clase “Persona”.
La clase “Persona” nos servirá de base para crear la lista y poder acceder a sus datos de forma sencilla. La clase cuenta con variables de clase privadas, un método constructor y los Setters & Getters para tener acceso a los datos. A esta aplicación solo servirán los Getters para obtener los datos.
Código Java
/**
*
* @author Ariel
*/

public class Persona {
//Creamos variables de clase.
private int id;
private String nombreApellido;
private String dir;
private String telef;
//Creamos el constructor de la clase
public Persona(int id, String nombreApellido, String dir, String telef) {
this.id = id;
this.nombreApellido = nombreApellido;
this.dir = dir;
this.telef = telef;
}
//Creamos los Setters & Getters. Llamados métodos accesores.
public String getDir() {
return dir;
}

public void setDir(String dir) {
this.dir = dir;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getNombreApellido() {
return nombreApellido;
}

public void setNombreApellido(String nombreApellido) {
this.nombreApellido = nombreApellido;
}

public String getTelef() {
return telef;
}

public void setTelef(String telef) {
this.telef = telef;
}

}
Lo siguiente es crear un formulario utilizando un JFrame.
En el diseño vemos la descripción en rojo del nombre de variables que le asignamos a cada objeto, es importante para entender mejor el funcionamiento de los métodos.
Diseño del formulario utilizando JFrame.
Como elementos utilizamos “Botón”, y “Tabla”.
Se puede cambiar el “Nombre de variable” de cada objeto haciendo clic derecho y “Cambiar nombre de variable…”. Se puede usar la que se ajuste a los métodos creados.
Observación: Tomar en cuenta que hay que utilizar las importaciones “import”, básico para utilizar ciertos métodos y objetos. El “setLocationRelativeTo(null)” sirve para centrar el formulario. Los métodos llamados en el constructor de la clase se inician al ejecutar el formulario. Si la Clase “Persona” en este caso está en el mismo paquete que la aplicación, no es necesaria realizar la importación.
Creamos los métodos siguientes en el apartado “Fuente”. Estos métodos utilizan conversiones de tipos de datos, controles de excepciones y demás para controlar lo mejor posible el resultado. Se insertan algunos comentarios para tratar de explicar el funcionamiento de cada método.
Código Java
public void tableModel(){
this.jTable1.getColumnModel().getColumn(0).setPreferredWidth(10);
this.jTable1.getColumnModel().getColumn(1).setPreferredWidth(150);
this.jTable1.getColumnModel().getColumn(2).setPreferredWidth(150);
this.jTable1.getColumnModel().getColumn(3).setPreferredWidth(100);
model = (DefaultTableModel)this.jTable1.getModel();
model.setNumRows(0);
}
public void cargarPersona(){
//Utilizamos la variable lista como ArrayList().
lista = new ArrayList();
lista.clear();
//Cargamos 10 elementos a la lista utilizando el método siguiente.
//La lista puede contener datos obtenidos desde una base de datos.
for (int i = 0; i < 10; i++) {
lista.add(new Persona((i+1), "Persona " +(i+1), "Dirección " +(i+1), "Teléfono " +(i+1)));
}
}
public void cargarTabla(){
//Limpiamos la tabla para no duplicar datos...
model.setNumRows(0);
//Llamamos el método ccargarPersona().
cargarPersona();
//Utilizamos "Iterator" para navegar por la lista.
for (Iterator it = lista.iterator(); it.hasNext();) {
//Hacemos una conversión de la lista en clase Persona
//Esto nos permite obtener los datos con el get.
Persona p = (Persona) it.next();
model.addRow(new Object[]{
p.getId(),p.getNombreApellido(),p.getDir(),p.getTelef()
});
}
}
public void limpiarTabla(){
model.setNumRows(0);
}
Utilizamos el evento “ActionPerformed” para llamar los métodos desde los botones. Para utilizar un “Evento” hacemos clic derecho sobre el objeto y seleccionamos “Eventos” de la lista utilizamos la que podamos aplicar al objeto.
Código Java
    private void cargarActionPerformed(java.awt.event.ActionEvent evt) {                                       
cargarTabla();
}

private void limpiarActionPerformed(java.awt.event.ActionEvent evt) {
limpiarTabla();
}
En la imagen, el formulario en ejecución.
Enlace para descarga del Formulario: http://goo.gl/GgZvVY
Son dos archivos más la clase persona, copiar los tres dentro de la carpeta de tu proyecto, tomar en cuenta que hay que cambia la línea de código siguiente: (package com.java.swing;) que indica el paquete de origen por el paquete en el que se ubicarán estos archivos.

Java básico 042. Función de Arrays como parámetro, control de duplicación más retorno.

Ejercicio: Desarrolla una función que calcule el máximo de una tabla (Arrays) de n elementos. Agregar una función que permite controlar que los números generados aleatoriamente no se repitan dentro del Arrays.
Código Java
import java.util.Arrays;

/**
*
* @author Ariel
*/

public class FuncionArray {

/**
* @param args the command line arguments
*/

public static void main(String[] args) {
int numero[] = new int[25];
int max;
//Llenamos la tabla con elementos aleatorios.
for (int i = 0; i < numero.length; i++) {
int k = (int)(Math.random() * 100 + 1);
//Llamamos a la función control.
//Permite que los datos duplicados no se almacenen en la tabla.
boolean control = control(numero, k);
if(control==false){
numero[i] = k;
}
else{
i--;
}

}
//Imprimimos la tabla con los valores generados.
for (int i = 0; i < numero.length; i++) {
int j = numero[i];
System.out.print(j + " ");
}
//Buscamos el mayor de los valores generados.
max = maximo(numero);
//Imprimimos el resultado.
System.out.println("\nEl mayor resultante es: " + max);
//Ordenamos los elementos utilizando "sort" para comprobar.
Arrays.sort(numero);
//Impriminos ardenado.
for (int i = 0; i < numero.length; i++) {
int j = numero[i];
System.out.print(j + " ");
}
}
//Función para encontrar el máximo.
static int maximo(int[] num){
int max = num[0];
for (int i = 0; i < num.length; i++) {
int j = num[i];
if(j > max){
max = j;
}
}
return max;
}
//Función para controlar que no se repitan los valores-
//-generados de forma aleatoria.
static boolean control(int[] num, int k){
boolean control = false;
for (int j = 0; j < num.length; j++) {
if(num[j] == k){
control = true;
}
}
return control;
}
}

Java básico 041. Función de Arrays como parámetro más retorno.

Ejercicio: Desarrolla una función que calcule el máximo de una tabla (Arrays) de n elementos.
Código Java
import java.util.Arrays;

/**
*
* @author Ariel
*/

public class FuncionArray {

/**
* @param args the command line arguments
*/

public static void main(String[] args) {
int numero[] = new int[20];
int max;
//Llenamos la tabla con elementos aleatorios.
for (int i = 0; i < numero.length; i++) {
numero[i] = (int)(Math.random() * 100 + 1);
}
//Imprimimos la tabla con los valores generados.
for (int i = 0; i < numero.length; i++) {
int j = numero[i];
System.out.print(j + " ");
}
//Buscamos el mayor de los valores generados.
max = maximo(numero);
//Imprimimos el resultado.
System.out.println("\nEl mayor resultante es: " + max);
//Ordenamos los elementos utilizando "sort" para comprobar.
Arrays.sort(numero);
//Impriminos ardenado.
for (int i = 0; i < numero.length; i++) {
int j = numero[i];
System.out.print(j + " ");
}
}
static int maximo(int[] num){
int max = num[0];
for (int i = 0; i < num.length; i++) {
int j = num[i];
if(j > max){
max = j;
}
}
return max;
}
}

Java básico 040. Función, tres parámetros y retorno.

Ejercicio: Desarrolla una función que calcule el máximo de 3 números.
Código Java
import java.util.Scanner;

/**
*
* @author Ariel
*/

public class FuncionDos {

/**
* @param args the command line arguments
*/

public static void main(String[] args) {
int max, numUno, numDos,numTres;
Scanner num = new Scanner(System.in);
System.out.print("Ingresa el primer parámetro: ");
numUno = num.nextInt();
System.out.print("Ingresa el segundo parámetro: ");
numDos = num.nextInt();
System.out.print("Ingresa el tercer parámetro: ");
numTres = num.nextInt();
//Utilizamos la función pasandole los tres parámetros.
//Guardamos el resulado en una variable entera,
//ya que el retorno es de tipo entoro.
max = maximo(numUno, numDos, numTres);
System.out.println("El máximo es : " + max);
}

static int maximo(int a, int b, int c){
//Se espera que los tres números sean distintos.
int max;
if(a > b && a > c){
max = a;
}
else{
if(b > a && b > c){
max = b;
}
else{
max = c;
}
}
return max;
}
}

Java básico 039. Función, dos parámetros y retorno.

Ejercicio: Diseñar una función que tenga como parámetros dos números, y que calcule el máximo.
Código Java
import java.util.Scanner;

/**
*
* @author Ariel
*/

public class FuncionDos {

/**
* @param args the command line arguments
*/

public static void main(String[] args) {
int max, numUno, numDos;
Scanner num = new Scanner(System.in);
System.out.print("Ingresa el primer parámetro: ");
numUno = num.nextInt();
System.out.print("Ingresa el segundo parámetro: ");
numDos = num.nextInt();
max = maximo(numUno, numDos);
System.out.println("El máximo es : " + max);
}

static int maximo(int a, int b){
//Se espera que los dos números sean distintos.
int max;
if(a > b){
max = a;
}
else{
max = b;
}
return max;
}
}

Java básico 038. Función, un parámetro.

Ejercicio: Realizar una función, a la que se le pase como parámetro un número N, y muestre por pantalla N veces, el mensaje: “Función Ejecutada.”
Código Java
import java.util.Scanner;

/**
*
* @author Ariel
*/

public class FuncionUno {

/**
* @param args the command line arguments
*/

public static void main(String[] args) {
int num;
Scanner numero = new Scanner(System.in);
System.out.print("Ingresa el parametro entero: ");
num = numero.nextInt();
mostrar(num);
}
static void mostrar(int num){
for (int i = 0; i < num; i++) {
System.out.println("Función Ejecutada " + (i + 1));
}
}
}

Java básico 037. Arrays bidimensionales. Transponer elementos deTabla.

Ejercicio: Crear y cargar una tabla de tamaño 3x3, trasponerla y mostrarla.
Código Java
import java.util.Scanner;

/**
*
* @author Ariel
*/

public class BidimensionTransponer {
public static void main(String[] args) {
int[][] num = new int[3][3];
Scanner numero = new Scanner(System.in);
System.out.println("Ingrese los números.");
for (int i = 0; i < num.length; i++) {//Dimensión Uno.
for (int j = 0; j < num.length; j++) {//Dimensión Dos.
System.out.print("["+i+"]"+"["+j+"]"+"=");
num[i][j]=numero.nextInt();
}
}
System.out.println("Imprimiendo Tabla Original.");
for (int i = 0; i < num.length; i++) {
System.out.println();
for (int j = 0; j < num.length; j++) {
System.out.print(num[i][j] + " ");
}
}
//Solo se transpone los elementos por debajo de la diagonal principal.
//Caso contrario la matriz queda igual.
//Esta se hace inicializando "i" en 1.
System.out.println("\nTransponiendo Tabla.");
int aux;
for (int i = 1; i < num.length; i++) {
for (int j = 0; j < num.length; j++) {
aux = num[i][j];
num[i][j] = num[j][i];
num[j][i] = aux;
}
}
System.out.println("Mostrando Tabla transpuesta.");
for (int i = 0; i < num.length; i++) {
System.out.println();
for (int j = 0; j < num.length; j++) {
System.out.print(num[i][j] + " ");
}
}
}
}

Java básico 036. Arrays bidimensionales. Suma de tablas.

Ejercicio: Crear y cargar dos matrices de tamaño 3x3, sumarlas y mostrar su suma.
Código Java
import java.util.Scanner;

/**
*
* @author Ariel
*/

public class BidimensionSuma {
public static void main(String[] args) {
int[][] numUno = new int[3][3];
int[][] numDos = new int[3][3];
Scanner numero = new Scanner(System.in);
System.out.println("Cargando Tabla Uno.");
for (int i = 0; i < numUno.length; i++) {//Dimensión Uno.
for (int j = 0; j < numUno.length; j++) {//Dimensión Dos.
System.out.print("["+i+"]"+"["+j+"]"+"=");
numUno[i][j]=numero.nextInt();
}
}
System.out.println("Cargando Tabla Dos.");
for (int i = 0; i < numDos.length; i++) {//Dimensión Uno.
for (int j = 0; j < numDos.length; j++) {//Dimensión Dos.
System.out.print("["+i+"]"+"["+j+"]"+"=");
numDos[i][j]=numero.nextInt();
}
}
System.out.println("Imprimiendo Tabla Uno.");
for (int i = 0; i < numUno.length; i++) {
System.out.println();
for (int j = 0; j < numUno.length; j++) {
System.out.print(numUno[i][j] + " ");
}
}
System.out.println("\nImprimiendo Tabla Dos.");
for (int i = 0; i < numDos.length; i++) {
System.out.println();
for (int j = 0; j < numDos.length; j++) {
System.out.print(numDos[i][j] + " ");
}
}
int[][] suma = new int[3][3];
System.out.println("\nSumando las dos Tablas.");
for (int i = 0; i < suma.length; i++) {
for (int j = 0; j < suma.length; j++) {
suma[i][j]= numUno[i][j] + numDos[i][j];
}
}
System.out.println("\nImprimiendo Suma.");
for (int i = 0; i < suma.length; i++) {
System.out.println();
for (int j = 0; j < suma.length; j++) {
System.out.print(suma[i][j] + " ");
}
}
}
}

Java básico 035. Arrays bidimensionales. Comprobando Simetría.

Ejercicio: crear y cargar una tabla de tamaño 4x4 y decir si es simétrica o no, es decir si se obtiene la misma tabla al cambiar las filas por columnas.
Código Java
import java.util.Scanner;

/**
*
* @author Ariel
*/

public class BidimensionArrays {
public static void main(String[] args) {
int[][] num = new int[4][4];
boolean simetrico;
Scanner numero = new Scanner(System.in);
System.out.println("Ingrese los números.");
for (int i = 0; i < num.length; i++) {//Dimensión Uno.
for (int j = 0; j < num.length; j++) {//Dimensión Dos.
System.out.print("["+i+"]"+"["+j+"]"+"=");
num[i][j]=numero.nextInt();
}
}
System.out.println("Imprimiendo Tabla.");
for (int i = 0; i < num.length; i++) {
System.out.println();
for (int j = 0; j < num.length; j++) {
System.out.print(num[i][j] + " ");
}
}
System.out.println("\nComprobando Simetria.");
simetrico = true;
int control = num.length -1;
int i=0;
while (i < control && simetrico == true) {
int j=0;
while (j < control && simetrico == true) {
if(num[i][j] != num[j][i]){
simetrico = false;
}
j++;
}
i++;
}
if(simetrico){
System.out.println("La tabla resulta Simétrica.");
}
else{
System.out.println("La tabla no es Simétrica.");
}
}
}

Java básico 034. Arrays bidimensionales. Suma de Filas y Columnas.

Ejercicio: Crear y cargar una tabla de tamaño 3x3, mostrar la suma de cada fila y de cada columna.
Código Java
import java.util.Scanner;



/**
*
* @author Ariel
*/

public class Bidimensional {

/**
* @param args the command line arguments
*/

public static void main(String[] args) {
int[][] num = new int[3][3];
Scanner numero = new Scanner(System.in);
System.out.println("Ingrese los números.");
for (int i = 0; i < num.length; i++) {//Dimensión Uno.
for (int j = 0; j < num.length; j++) {//Dimensión Dos.
num[i][j]=numero.nextInt();
}
}
System.out.println("Imprimiendo Tabla.");
for (int i = 0; i < num.length; i++) {
System.out.println();
for (int j = 0; j < num.length; j++) {
System.out.print(num[i][j] + " ");
}
}

System.out.println("\nSuma Fila.");
int suma=0;
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num.length; j++) {
suma += num[i][j];
}
System.out.println("Fila " + i + " =" + suma);
suma=0;
}
System.out.println("\nSuma Columna");
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num.length; j++) {
suma += num[j][i];
}
System.out.println("Columna " + i + " =" + suma);
suma=0;
}

}
}

Java básico 033. Arrays bidimensionales.

Ejercicio: Crear una tabla bidimensional de tamaño 5x5 y rellenarla de la siguiente forma: la posición T[n,m] debe contener n+m. Después se debe mostrar su contenido.
Código Java
public class Bidimensional {

/**
* @param args the command line arguments
*/

public static void main(String[] args) {
int[][] num = new int[5][5];
for (int i = 0; i < num.length; i++) {//Dimensión Uno.
for (int j = 0; j < num.length; j++) {//Dimensión Dos.
num[i][j]=i+j;
}
}
System.out.println("Imprimiendo Tabla.");
for (int i = 0; i < num.length; i++) {
System.out.println();
for (int j = 0; j < num.length; j++) {
System.out.print(num[i][j] + " ");
}
}
}
}

Java básico 032. Imprimiendo Arrays orden inverso.

Ejercicio: Leer 5 números y mostrarlos en orden inverso al introducido.
Código Java
import java.util.Scanner;

/**
*
* @author Ariel
*/

public class NumArray {

/**
* @param args the command line arguments
*/

public static void main(String[] args) {
int num[] = new int[5];
Scanner numero = new Scanner(System.in);
for (int i = 0; i < num.length; i++) {
System.out.print("Introduce un número: ");
num[i]=numero.nextInt();
}
System.out.println("Imprimiendo orden inverso.");
for (int i = num.length - 1; i >= 0 ; i--) {
System.out.println("Indice " + i + " =" + num[i]);
}
}
}

Java básico 031. Tabla de multiplicar del 1 al 10. Utilizando bucles anidados.

Ejercicio: Diseña una aplicación que muestre las tablas de multiplicar del 1 al 10.
Código Java
public class TablaMultiplicarDos {

/**
* @param args the command line arguments
*/

public static void main(String[] args) {
//Utilizando Bucles anidados.
for (int i = 1; i <= 10; i++) {
System.out.println("Tabla de multiplicar del " + i);
for (int j = 1; j <= 10; j++) {
System.out.println(i + " X " + j + " =" + i*j);
}

}

}
}

Java + Swing 013. Modo diseño en NetBeans. Trabajando con tabla.

Ejercicio: Realizar una pequeña aplicación que nos permite agregar, recuperar, modifica y eliminar datos de una tabla.
En el diseño vemos la descripción en rojo del nombre de variables que le asignamos a cada objeto, es importante para entender mejor el funcionamiento de los métodos.
Diseño del formulario utilizando JFrame.
Como elementos utilizamos “Etiquetas”, “Botón”, “Tabla” y “Campos de Texto”.
Se puede cambiar el “Nombre de variable” de cada objeto haciendo clic derecho y “Cambiar nombre de variable…”. Se puede usar la que se ajuste al código de más abajo. Los campos de texto para resultados se puede indicar como deshabilitado, desmarcando “enabled” en “Properties o Propiedades” de modo diseño.
Observación: Tomar en cuenta que hay que utilizar las importaciones “import”, básico para utilizar ciertos métodos y objetos. El “setLocationRelativeTo(null)” sirve para centrar el formulario. Los métodos llamados en el constructor de la clase se inician al ejecutar el formulario.
Creamos los métodos siguientes en el apartado “Fuente”. Estos métodos utilizan conversiones de tipos de datos, controles de excepciones y demás para controlar lo mejor posible el resultado. Se insertan algunos comentarios para tratar de explicar el funcionamiento de cada método.
Código Java

public void iniciar(){
//Método que se carga al inicio del formulario,
//Esto lo hacemos llamandolo desde el contructor.
//Principalmente consiste en Limpiar campos y Deshabilitarlas.
this.id.setText(null);
this.id.setEnabled(false);
this.nom.setText(null);
this.nom.setEnabled(false);
this.dir.setText(null);
this.dir.setEnabled(false);
this.correo.setText(null);
this.correo.setEnabled(false);
this.agregar.setEnabled(false);
this.actualizar.setEnabled(false);
this.nuevo.setEnabled(true);
this.editar.setEnabled(false);
this.eliminar.setEnabled(false);
this.jTable1.setEnabled(true);
fila = 0;
}
public void tableModel(){
//Método que se carga al inicio del formulario,
//Esto lo hacemos llamandolo desde el contructor.
/*Utilizamos el siguiente procedimiento para indicar el tamaño
* del cada columna, el índice inicia de 0.
*/

this.jTable1.getColumnModel().getColumn(0).setPreferredWidth(5);
this.jTable1.getColumnModel().getColumn(1).setPreferredWidth(100);
this.jTable1.getColumnModel().getColumn(2).setPreferredWidth(100);
this.jTable1.getColumnModel().getColumn(3).setPreferredWidth(100);
//Indicamos que la variable model se aplica al jTable1.
model = (DefaultTableModel)this.jTable1.getModel();
//Indicamos la cantidad de filas que tendrá la tabla al inicio.
model.setNumRows(0);
}
public void cancelar(){
//Método que se ejecuta al precionar el botón "Cancelar".
iniciar();
}
public void nuevo(){
//Método que se ejecuta al precionar el botón "Nuevo".
iniciar();
//Utilizamos este procedimiento para generar el id.
this.id.setText(String.valueOf(this.jTable1.getRowCount() + 1));
//Activamos campos y bóton.
this.nom.setEnabled(true);
this.dir.setEnabled(true);
this.correo.setEnabled(true);
this.agregar.setEnabled(true);
}
public void agregar(){
//Comprobamos que los campos no esten vacios.
if(nom.getText().isEmpty() || dir.getText().isEmpty() || correo.getText().isEmpty() ){
JOptionPane.showMessageDialog(null, "Rellena todos los campos.");
}
else{
//Agregamos datos a la tabla utilizando Object.
//Cada getText() entre comas significa una columna.
model.addRow(new Object[]{
id.getText(),nom.getText(),dir.getText(),correo.getText()
});
iniciar();
}
}
public void seleccionarFila(){
//Utilizamos este método para obtener que fila se ha seleccionado.
//Habilitamos botones y campos.
//Rellenamos campos.
if(jTable1.getRowCount() > 0 || agregar.isEnabled()== false){
//Utilizamos getValueAt del model para obtener datos de la tabla.
fila = jTable1.getSelectedRow();
id.setText(String.valueOf(model.getValueAt(fila, 0)));
nom.setText(String.valueOf(model.getValueAt(fila, 1)));
dir.setText(String.valueOf(model.getValueAt(fila, 2)));
correo.setText(String.valueOf(model.getValueAt(fila, 3)));
nuevo.setEnabled(false);
editar.setEnabled(true);
eliminar.setEnabled(true);
}
}
public void editar(){
//Al precionar el botón editar se activan algunos campos
// y otros se desactivan. Lo mismo con los botones.
jTable1.setEnabled(false);
eliminar.setEnabled(false);
actualizar.setEnabled(true);
nom.setEnabled(true);
dir.setEnabled(true);
correo.setEnabled(true);
}
public void actualizar(){
if(nom.getText().isEmpty() || dir.getText().isEmpty() || correo.getText().isEmpty() ){
JOptionPane.showMessageDialog(null, "Rellena todos los campos.");
}
else{
//Utilizamos setValueAt para modificar datos en tabla.
//Por orden se indica "Datos a cargar", fila y columna.
model.setValueAt(nom.getText(), fila, 1);
model.setValueAt(dir.getText(), fila, 2);
model.setValueAt(correo.getText(), fila, 3);
iniciar();
}
}
public void eliminar(){
//Utilizamos showConfirmDialog para el botón eliminar.
int showConfirmDialog = JOptionPane.showConfirmDialog(null, "Desea eliminar esta fila.", "Mensaje del Sistema.", JOptionPane.YES_NO_OPTION);
if (showConfirmDialog == 0) {
model.removeRow(fila);
reiniciar();
iniciar();
}
}
public void reiniciar(){
//Reordenamos el id para evitar que se dupliquen.
for (int i = 0; i < jTable1.getRowCount(); i++) {
model.setValueAt(i+1, i, 0);
}
}
Utilizamos el evento “ActionPerformed” para llamar los métodos desde los botones. Para utilizar un “Evento” hacemos clic derecho sobre el objeto y seleccionamos “Eventos” de la lista utilizamos la que podamos aplicar al objeto. Para la tabla utilizamos el evento “MouseClicked”.
Código Java
    private void cancelarActionPerformed(java.awt.event.ActionEvent evt) {                                         
cancelar();
}

private void nuevoActionPerformed(java.awt.event.ActionEvent evt) {
nuevo();
}

private void agregarActionPerformed(java.awt.event.ActionEvent evt) {
agregar();
}

private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
seleccionarFila();
}

private void editarActionPerformed(java.awt.event.ActionEvent evt) {
editar();
}

private void actualizarActionPerformed(java.awt.event.ActionEvent evt) {
actualizar();
}

private void eliminarActionPerformed(java.awt.event.ActionEvent evt) {
eliminar();
}
En la imagen, el formulario en ejecución.

Java básico 030. Tabla de multiplicar de un número entre 0 y 10.

Ejercicio: Pide un número (que debe estar entre 0 y 10) y mostrar la tabla de multiplicar de dicho número.
Código Java
import java.util.Scanner;

/**
*
* @author Ariel
*/

public class TablaMultiplicar {

/**
* @param args the command line arguments
*/

public static void main(String[] args) {
int num;
Scanner numero = new Scanner(System.in);
do {
System.out.print("Ingresa un número (del 0 al 10): ");
num = numero.nextInt();
} while ( 0 <= num && num >= 10);

for (int i = 1; i <= 10; i++) {
System.out.println(num + " X " + i + " = " + num*i);
}
}
}

Java básico 029. Encontrar múltiplos de 3.

Ejercicio: Pedir 5 números e indicar si alguno es múltiplo de 3.
Código Java
import java.util.Scanner;

/**
*
* @author Ariel
*/

public class MultiploTres {

/**
* @param args the command line arguments
*/

public static void main(String[] args) {
int num;
boolean multiploTres = false;
Scanner numero = new Scanner(System.in);
for (int i = 0; i < 5; i++) {
System.out.print("Introduce un número: ");
num = numero.nextInt();
if(num % 3 == 0){
//Hay múltiplo de tres...
multiploTres = true;
}
}
if(multiploTres==false){
System.out.println("No se introdujeron múltiplos de (3).");
}
else{
System.out.println("Hay al menos un múltiplo de (3).");
}
}
}

Java básico 028. Factorial de un número.

Ejercicio: Pedir un número y calcular su factorial.
Código Java
import java.util.Scanner;

/**
*
* @author Ariel
*/

public class FactorialNumero {

/**
* @param args the command line arguments
*/

public static void main(String[] args) {
//Ej.: El factorial de 5 es: 5*4*3*2*1
long factorial=1;
int num;
Scanner numero = new Scanner(System.in);
System.out.print("Introduce un número: ");
num = numero.nextInt();
for (int i = num; i > 0; i--) {
factorial = factorial * i;
}
System.out.println("El factorial de " + num + " es: " + factorial);
}
}

Java básico 027. Utilizando “do-while”.

Ejercicio: Pedir números hasta que se teclee un 0, mostrar la suma de todos los números introducidos.
Código Java
import java.util.Scanner;

/**
*
* @author Ariel
*/

public class SumaDo {

/**
* @param args the command line arguments
*/

public static void main(String[] args) {
int num, suma=0;
Scanner numero = new Scanner(System.in);
do {
System.out.print("Ingrese un número: ");
num = numero.nextInt();
suma+=num;
} while (num != 0);
System.out.println("La suma total da: " + suma);
//Se sale del bucle a ingresas 0.
}
}

Java + Swing 012. Modo diseño en NetBeans. Juego de números aleatorios utilizando Thread y Random.

Ejercicio: Realizar un juego para adivinar un número. Para ello generar un número de forma aleatoria utilizando Thread y Random. El proceso termina cuando el usuario acierta o cancela el juego.
En el diseño vemos la descripción en rojo del nombre de variables que le asignamos a cada objeto, es importante para entender mejor el funcionamiento de los métodos.
Diseño del formulario utilizando JFrame.
Como elementos utilizamos “Etiquetas”, “Botón” y “Campos de Texto”.
Se puede cambiar el “Nombre de variable” de cada objeto haciendo clic derecho y “Cambiar nombre de variable…”. Se puede usar la que se ajuste al código de más abajo. Los campos de texto para resultados se puede indicar como deshabilitado, desmarcando “enabled” en “Properties o Propiedades” de modo diseño.
Observación: Tomar en cuenta que hay que utilizar las importaciones “import”, básico para utilizar ciertos métodos y objetos. El “setLocationRelativeTo(null)” sirve para centrar el formulario. Los métodos llamados en el constructor de la clase se inician al ejecutar el formulario.
Creamos los métodos siguientes en el apartado “Fuente”. Estos métodos utilizan conversiones de tipos de datos, controles de excepciones y demás para controlar lo mejor posible el resultado. También se crea un objeto “Thread” y se implementa sus métodos.
Código Java
public void iniciar(){
this.num.setEnabled(false);
this.num.setText(null);
this.result.setText(null);
this.nuevo.setEnabled(true);
this.nuevo.setText("Nuevo");
this.jugar.setEnabled(false);
this.comprobar.setEnabled(false);
contador=0;
}
public void nuevo(){
if(this.nuevo.getText().equals("Nuevo")){
this.nuevo.setText("Cancelar");
this.jugar.setEnabled(true);
salir = true;
Thread t = new Thread(new Runnable() {
@Override
public void run() {
Random ran = new Random();
while (salir) {
int nextInt = (int)(ran.nextDouble()*100);
result.setText(String.valueOf(nextInt));
numAleatorio = nextInt;
try {
//Se puede ampliar o reducir el tiempo de espera.
Thread.sleep(100);
} catch (InterruptedException ex) {
Logger.getLogger(JuegoNum.class.getName()).log(Level.SEVERE, null, ex);
}
if(salir==false){
break;
}
}

}
});
t.start();
}
else{
iniciar();
}
}
public void jugar(){
this.num.setEnabled(true);
salir = false;
this.jugar.setEnabled(false);
this.comprobar.setEnabled(true);
this.result.setText("**");
}
public void comprobar(){
int numUser;
try {
numUser = Integer.parseInt(this.num.getText());
contador++;
if(numUser==numAleatorio){
JOptionPane.showMessageDialog(null, "Perfecto: Acertaste después de " + contador + " intentos. "+"(" + numUser+"="+numAleatorio+")");
iniciar();
}
else{
JOptionPane.showMessageDialog(null, "Fallaste: Intenta de nuevo. " + "Van : " + contador + " intentos.");
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Requiere dato numérico.");
}

}
Utilizamos el evento “ActionPerformed” para llamar los métodos desde los botones. Para utilizar un “Evento” hacemos clic derecho sobre el objeto y seleccionamos “Eventos” de la lista utilizamos la que podamos aplicar al objeto. En la lista de evento vemos los comentarios especificando a que objetos se aplican.
Código Java
    private void nuevoActionPerformed(java.awt.event.ActionEvent evt) {
nuevo();//Evento ActionPerformed para botón Nuevo.
}

private void jugarActionPerformed(java.awt.event.ActionEvent evt) {
jugar();//Evento ActionPerformed para botón Jugar.
}

private void comprobarActionPerformed(java.awt.event.ActionEvent evt) {
comprobar();//Evento ActionPerformed para botón Comprobar.
}
En la imagen el formulario en ejecución.