Estructuras de control en Java

Las estructuras de control determinan la secuencia de ejecución de las sentencias de un programa. 
Las estructuras de control se dividen en tres categorías:
          Secuencial
          Condicional o Selectiva
          Iterativa o Repetitiva.
1.          ESTRUCTURA SECUENCIAL
El orden en que se ejecutan por defecto las sentencias de un programa es secuencial. Esto significa que las sentencias se ejecutan en secuencia, una después de otra, en el orden en que aparecen escritas dentro del programa.
La estructura secuencial está formada por una sucesión de instrucciones que se ejecutan en orden una a continuación de la otra.
Cada una de las instrucciones están separadas por el carácter punto y coma (;).
Las instrucciones se suelen agrupar en bloques.
El bloque de sentencias se define por el carácter llave de apertura ({) para marcar el inicio del mismo, y el carácter llave de cierre (}) para marcar el final.
Ejemplo:
{
instrucción 1;
instrucción 2;
instrucción 3;
}
En Java si el bloque de sentencias está constituido por una única sentencia no es obligatorio el uso de las llaves de apertura y cierre ({ }), aunque sí recomendable.

Ejemplo de programa Java con estructura secuencial: Programa que lee dos números por teclado y los muestra por pantalla.
/* Programa que lea dos números por teclado y los muestre por pantalla.
 */
import java.util.*;
public class Main {
    public static void main(String[] args){
        //declaración de variables
        int n1, n2;
        Scanner sc = new Scanner(System.in);
        //leer el primer número
        System.out.println("Introduce un número entero: ");
        n1 = sc.nextInt();      //lee un entero por teclado
        //leer el segundo número
        System.out.println("Introduce otro número entero: ");
        n2 = sc.nextInt();      //lee un entero por teclado
       
        //mostrar resultado
        System.out.println("Ha introducido los números: " + n1 + " y " + n2);
    }
}

Ejemplo de programa Java con estructura secuencial: Programa que lee dos números de tipo double por teclado y calcula y muestra por pantalla su suma, resta y multiplicación.
/*
 * Programa que lee dos números de tipo double por teclado
 * y muestra su suma, resta y multiplicación.
 */
import java.util.*;
public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        double numero1, numero2;
        System.out.println("Introduce el primer número:");
        numero1 = sc.nextDouble();
        System.out.println("Introduce el segundo número:");
        numero2 = sc.nextDouble();
        System.out.println("Números introducido: " + numero1 + "  " + numero2);
        System.out.println
          (numero1 + " + " + numero2 + " = " + (numero1+numero2));
        System.out.println
          (numero1 + " - " + numero2 + " = " + (numero1-numero2));
        System.out.println
          (numero1 + " * " + numero2 + " = " + numero1*numero2);
    }
}
Para modificar el orden de ejecución de las instrucciones de un programa Java se utilizan las estructuras condicionales y repetitivas.
2.  ESTRUCTURA CONDICIONAL, ALTERNATIVA O SELECTIVA
La estructura condicional determina si se ejecutan unas instrucciones u otras según se cumpla o no una determinada condición.
En java la estructura condicional se implementa mediante:
-         Instrucción if.
-         Instrucción switch.
-         Operador condicional ? :

2.1 INSTRUCCION if
Puede ser del tipo:
-         Condicional simple: if
-         Condicional doble: if ... else ...
-         Condicional múltiple: if .. else if ..

La condición debe ser una expresion booleana es decir debe dar como resultado un valor booleano (true ó false).
Condicional simple: se evalúa la condición y si ésta se cumple se ejecuta una determinada acción o grupo de acciones. En caso contrario se saltan dicho grupo de acciones.
         if(expresión_booleana){
            instrucción 1
            instrucción 2
            .......
         }
Si el bloque de instrucciones tiene una sola instrucción no es necesario escribir las llaves { } aunque para evitar confusiones se recomienda escribir las llaves siempre.

Ejemplo de programa Java con estructura condicional: Programa que pide por teclado la nota obtenida por un alumno y muestra un mensaje si el alumno ha aprobado.
/*
 * Programa que pide una nota por teclado y muestra un mensaje si la nota es
 * mayor o igual que 5
 */
import java.util.*;
public class Ejemplo0If {
    public static void main( String[] args ){
        Scanner sc = new Scanner( System.in );
        System.out.print("Nota: ");
        int nota = sc.nextInt();
        if (nota >= 5 ){
            System.out.println("Enorabuena!!");
            System.out.println("Has aprobado");
        }
    }
}
Condicional doble: Se evalúa la condición y si ésta se cumple se ejecuta una determinada instrucción o grupo de instrucciones. Si no se cumple se ejecuta otra instrucción o grupo de instrucciones.

           if(expresión booleana){
              instrucciones 1
           }
           else{
                  instrucciones 2
           }

Ejemplo de programa Java que contiene una estructura condicional doble: Programa que lee la nota de un alumno y muestra si el alumno ha aprobado o no.
/*
 * Programa que pide una nota por teclado y muestra si se ha aprobado o no
 */
import java.util.*;
public class Ejemplo0If {
    public static void main( String[] args ){
        Scanner sc = new Scanner( System.in );
        System.out.print("Nota: ");
        int nota = sc.nextInt();
        if (nota >= 5 ){
            System.out.println("Enorabuena!!");
            System.out.println("Has aprobado");
        }
        else
            System.out.println("Lo Siento, has suspendido");
    }
}

Otro ejemplo de programa Java que contiene una estructura condicional doble: Calcular si un número es par. El programa lee un número por teclado y muestra un mensaje indicando si es par o impar.

/*
 * programa que pide un número por teclado y calcula si es par o impar
 */
import java.util.*;
public class EjemploIf {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num;      
        System.out.println("Introduzca numero: ");
        num = sc.nextInt();
        if ((num%2)==0)
           System.out.println("PAR");
        else
            System.out.println("IMPAR");
    }
}
Condicional múltiple: Se obtiene anidando sentencias if ... else. Permite construir estructuras de selección más complejas.
if (expresion_booleana1)
instruccion1;
else if (expresion_booleana2)
instruccion2;
       else
instruccion3;
Cada else se corresponde con el if más próximo que no haya sido emparejado.
Una vez que se ejecuta un bloque de instrucciones, la ejecución continúa en la siguiente instrucción que aparezca después de las sentencias if .. else anidadas.

Ejemplo de programa Java que contiene una estructura condicional múltiple: Programa que lee una hora (número entero) y muestra un mensaje según la hora introducida.
/*
 * Programa que muestra un saludo distinto según la hora introducida
 */
import java.util.*;
public class Ejemplo2If {
    public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      int hora;
      System.out.println("Introduzca una hora (un valor entero): ");
      hora = sc.nextInt();
      if (hora >= 0 && hora < 12)
          System.out.println("Buenos días");
      else if (hora >= 12 && hora < 21)
           System.out.println("Buenas tardes");
      else if (hora >= 21 && hora < 24)
            System.out.println("Buenas noches");
      else
            System.out.println("Hora no válida");
    }
}

Ejemplo de programa Java que contiene una estructura condicional múltiple: Programa que lee una nota (número entero entre 0 y 10) y muestra la calificación equivalente en forma de texto.

/*
 * programa que lee una nota y escribe la calificación correspondiente
 */
import java.util.*;
public class Ejemplo3If {
    public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      double nota;
      System.out.println("Introduzca una nota entre 0 y 10: ");
      nota = sc.nextDouble();
      System.out.println("La calificación del alumno es ");
      if(nota < 0 || nota > 10)
         System.out.println("Nota no válida");
      else if(nota==10)
           System.out.println("Matrícula de Honor");
      else if (nota >= 9)
           System.out.println("Sobresaliente");
      else if (nota >= 7)
           System.out.println("Notable");
      else if (nota >= 6)
           System.out.println("Bien");
      else if (nota >= 5)
           System.out.println("Suficiente");
      else
           System.out.println("Suspenso");
    }
}

Comparar String en Java
Para comparar el contenido de dos Strings en Java se usa el método equals:
if ((cadena1.equals(cadena2))
En caso de que una cadena coincida exactamente con una constante se puede usar ==
String nombre = "Lucas";
if (nombre == "Lucas")
Para comparar Strings en el orden alfabético se usa el método compareTo
if (cadena1.compareTo(cadena2) < 0)  // cadena1 antes que cadena2
if (cadena1.compareTo(cadena2) > 0)  // cadena1 después que cadena2
if (cadena1.compareTo(cadena2) == 0)  // cadena1 igual que cadena2
2.2 INSTRUCCION switch
Se utiliza para seleccionar una de entre múltiples alternativas.
La forma general de la instrucción switch en Java es la siguiente:
switch (expresión){
case valor 1:
instrucciones;
break;
case valor 2:
instrucciones;
break;
· · ·
default:
instrucciones;
}
La instrucción switch se puede usar con datos de tipo byte, short, char e int. También con tipos enumerados y con las clases envolventes Character, Byte, Short e Integer. A partir de Java 7 también pueden usarse datos de tipo String en un switch.
Funcionamiento de la instrucción switch:
- Primero se evalúa la expresión y salta al case cuya constante coincida con el valor de la expresión.
  Se ejecutan las instrucciones que siguen al case seleccionado hasta que se encuentra un break o hasta el final del switch. El break produce un salto a la siguiente instrucción a continuación del switch.
  Si ninguno de estos casos se cumple se ejecuta  el bloque default (si existe). No es obligatorio que exista un bloque default y no tiene porqué ponerse siempre al final, aunque es lo habitual.
Ejemplo de programa Java que contiene una instrucción switch: Programa que lee por teclado un mes (número entero) y muestra el nombre del mes.
/*
 * Programa que pide un número de mes y muestra el nombre correspondiente
 */
import java.util.*;
public class Ejemplo0Switch {
    public static void main(String[] args) {
        int mes;
        Scanner sc = new Scanner(System.in);
        System.out.print("Introduzca un numero de mes: ");
        mes = sc.nextInt();
        switch (mes)
        {
                case 1: System.out.println("ENERO");
                           break;
                case 2: System.out.println("FEBRERO");
                           break;
                case 3: System.out.println("MARZO");
                           break;
                case 4: System.out.println("ABRIL");
                           break;
                case 5: System.out.println("MAYO");
                           break;
                case 6: System.out.println("JUNIO");
                           break;
                case 7: System.out.println("JULIO");
                           break;
                case 8: System.out.println("AGOSTO");
                           break;
                case 9: System.out.println("SEPTIEMBRE");
                           break;
                case 10: System.out.println("OCTUBRE");
                             break;
                case 11: System.out.println("NOVIEMBRE");
                             break;
                case 12: System.out.println("DICIEMBRE");
                             break;
                default : System.out.println("Mes no válido");                       
        }
    }
}
Ejemplo de programa Java que contiene una una instrucción switch: Programa que lee dos números enteros por teclado y un operador (de tipo carácter) y muestra el resultado de la operación.
/*
 * Programa que pide dos números y un operador y muestra el resultado
 */
import java.util.*;
import java.io.*;
public class Ejemplo1Switch {
    public static void main(String[] args) throws IOException{
        int A,B, Resultado = 0 ;
        char operador;
        boolean calculado = true;
        Scanner sc = new Scanner(System.in);
        System.out.print("Introduzca un numero entero:");
        A = sc.nextInt();
        System.out.print("Introduzca otro numero entero:");
        B = sc.nextInt();
        System.out.print("Introduzca un operador (+,-,*,/):");
        operador = (char)System.in.read();
        switch (operador) {
                case '-' : Resultado = A - B;
                           break;
                case '+' : Resultado = A + B;
                           break;
                case '*' : Resultado = A * B;
                           break;
                case '/' : if(B!=0)
                              Resultado = A / B;
                           else{
                              System.out.println("\nNo se puede dividir por cero");
                              calculado = false;
                           }
                           break;
                default : System.out.println("\nOperador no valido");
                          calculado = false;
                         
        }
        if(calculado){
            System.out.println("\nEl resultado es: " + Resultado);
        }
    }
}
2.3 OPERADOR CONDICIONAL ? :
Se puede utilizar en sustitución de la sentencia de control if-else.
Los forman los caracteres ? y :
Se utiliza de la forma siguiente:
expresión1 ? expresión2 : expresión3
Si expresión1 es cierta entonces se evalúa expresión2 y éste será el valor de la expresión condicional. Si expresión1 es falsa, se evalúa expresión3 y éste será el valor de la expresión condicional.
Ejemplo de programa Java que contiene un operador condicional: Programa que calcula y muestra si un número que se lee por teclado es par o impar.
 /*
  * programa que pide un número por teclado y calcula si es par o impar
  */
import java.util.*;
public class Ejemplo1OperadorCondicional {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num;      
        System.out.println("Introduzca numero: ");
        num = sc.nextInt();
        System.out.println((num%2)==0 ? "PAR" : "IMPAR");
    }
}
3.  ESTRUCTURA ITERATIVA O REPETITIVA
Permiten ejecutar de forma repetida un bloque específico de instrucciones.
Las instrucciones se repiten mientras o hasta que se cumpla una determinada condición. Esta condición se conoce como condición de salida.
Tipos de estructuras repetitivas:
-               ciclo while
-               ciclo do – while
-               ciclo for
3.1 CICLO WHILE
Las instrucciones se repiten mientras la condición sea cierta. La condición se comprueba al principio del bucle por lo que las acciones se pueden ejecutar 0 ó más veces.



La ejecución de un bucle while sigue los siguientes pasos:

1.      Se evalúa la condición.
2.       Si el resultado es false las instrucciones no se ejecutan y el programa sigue ejecutándose por la siguiente instrucción a continuación del while.
3.      Si el resultado es true se ejecutan las instrucciones y se vuelve al paso 1

Ejemplo de programa Java que contiene una instrucción while: 
Programa que lee números por teclado. La lectura acaba cuando el número introducido sea
negativo. El programa calcula y muestra la suma de los números leídos.
/*
 * Programa que lee números hasta que se lee un negativo y muestra la
 * suma de los números leídos
 */
import java.util.*;
public class Ejemplo1While {
    public static void main(String[] args) {
        int suma = 0, num;
        Scanner sc = new Scanner(System.in);
        System.out.print("Introduzca un número: ");
        num = sc.nextInt();
        while (num >= 0){
               suma = suma + num;
               System.out.print("Introduzca un número: ");
               num = sc.nextInt();
        }
        System.out.println("La suma es: " + suma );
    }
}
Ejemplo de programa Java que contiene una instrucción while: 
Programa que lee un número entero N y muestra  N asteriscos.

/*
 * programa que lee un número n y muestra n asteriscos
 */
import java.util.*;
public class Ejemplo2While {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n, contador = 0;
        System.out.print("Introduce un número: ");
        n = sc.nextInt();
        while (contador < n){
               System.out.println(" * ");
               contador++;
        }
    }
}
Ejemplo de programa Java con una instrucción while: 

/*
 * programa que muestra una tabla de equivalencias entre
 * grados Fahrenheit y grados celsius
 */
public class Ejemplo3While {
    public static void main(String[] args) {
        final int VALOR_INICIAL = 10;  // limite inf. tabla
        final int VALOR_FINAL = 100;  // limite sup. tabla
        final int PASO = 10 ; // incremento
        int fahrenheit;
        double celsius;
        fahrenheit = VALOR_INICIAL;
        System.out.printf("Fahrenheit \t Celsius \n");
        while (fahrenheit <= VALOR_FINAL ){
               celsius = 5*(fahrenheit - 32)/9.0;
               System.out.printf("%7d \t %8.3f \n", fahrenheit, celsius);
               fahrenheit += PASO;
        }
    }
}

3.2 CICLO DO – WHILE
Las instrucciones se ejecutan mientras la condición sea cierta.
La condición se comprueba al final del bucle por lo que el bloque de instrucciones se ejecutarán al menos una vez. Esta es la diferencia fundamental con la instrucción while. Las instrucciones de un bucle while es posible que no se ejecuten si la condición inicialmente es falsa. 
La ejecución de un bucle do - while sigue los siguientes pasos:
1.    Se ejecutan las instrucciones a partir de do{
2.    Se evalúa la condición.
3. Si el resultado es false el programa sigue ejecutándose por la siguiente instrucción a continuación del while.
4.    Si el resultado es true se vuelve al paso 1
Ejemplo de programa Java que contiene una instrucción do while: 
Programa que lee un número entero N. El número debe ser menor que 100.
/*
 * Programa que obliga al usuario a introducir un número menor que 100
 */
import java.util.*;
public class Ejemplo1DoWhile {
    public static void main(String[] args) {
        int valor;
        Scanner in = new Scanner( System.in );
        do {
            System.out.print("Escribe un entero < 100: ");
            valor = in.nextInt();
        }while (valor >= 100);
        System.out.println("Ha introducido: " + valor);
    }
}
Ejemplo de programa Java con una instrucción do while: 
/*
 * Programa que lee un número entre 1 y 10 ambos incluidos
 */
import java.util.*;
public class Ejemplo2DoWhile {
    public static void main(String[] args) {
        int n;
        Scanner sc = new Scanner( System.in );
        do {
            System.out.print("Escribe un número entre 1 y 10: ");
            n = sc.nextInt();
        }while (n<1 || n >10);
        System.out.println("Ha introducido: " + n);
    }
}
3.3 CICLO FOR
Hace que una instrucción o bloque de instrucciones se repitan un número determinado de veces mientras se cumpla la condición.
La estructura general de una instrucción for en Java es la siguiente:
for(inicialización; condición; incremento/decremento){
instrucción 1;
...........
instrucción N;
}
A continuación de la palabra for y entre paréntesis debe haber siempre tres zonas
separadas por punto y coma:
-               zona de inicialización.
-               zona de condición
-               zona de incremento ó decremento.
Si en alguna ocasión no es necesario escribir alguna de ellas se pueden dejar en blanco, pero los dos punto y coma deben aparecer.
Inicialización es la parte en la que la variable o variables de control del bucle toman su valor inicial. Puede haber una o más instrucciones en la inicialización, separadas por comas. La inicialización se realiza solo una vez.
Condición es una expresión booleana que hace que se ejecute la sentencia o bloque de sentencias mientras que dicha expresión sea cierta. Generalmente en la condición se compara la variable de control con un valor límite.
Incremento/decremento es una expresión que decrementa o incrementa la variable de control del bucle.
La ejecución de un bucle for sigue los siguientes pasos:
1. Se inicializa la variable o variables de control (inicialización)
2. Se evalúa la condición.
3. Si la condición es cierta se ejecutan las instrucciones. Si es falsa, finaliza la ejecución del bucle y continúa el programa en la siguiente instrucción después del for.
4. Se actualiza la variable o variables de control (incremento/decremento)
5. Se vuelve al punto 2.
Ejemplo de programa Java que contiene una instrucción for: 
/*
 * programa que muestra los números del 1 al 10
 */
public class Ejemplo0For {
    public static void main(String[] args) {
        int i;
        for(i=1; i<=10;i++)
            System.out.println(i + " ");
    }
}
La instrucción for del ejemplo anterior la podemos interpretar así:
Asigna a i el valor inicial 1, mientras que i sea menor o igual a 10 muestra i + “ “ , a continuación incrementa el valor de i y comprueba de nuevo la condición.
Ejemplo de programa Java con una instrucción for: 
/*
 * programa que muestra los números del 10 al 1
 */
public class Ejemplo2For {
    public static void main(String[] args) {
        int i;
        for(i=10; i>0;i--)
            System.out.println(i + " ");
    }
}
Ejemplo de programa Java con una instrucción for:
/*
 * programa que muestra una tabla de equivalencias entre
 * grados Fahrenheit y grados celsius
 */
public class Ejemplo1For {
    public static void main(String[] args) {
        final int VALOR_INICIAL = 10; // limite inf. tabla
        final int VALOR_FINAL = 100; // limite sup. tabla
        final int PASO = 10 ; // incremento
        int fahrenheit;
        double celsius;
        fahrenheit = VALOR_INICIAL;
        System.out.printf("Fahrenheit \t Celsius \n");
        for (fahrenheit = VALOR_INICIAL; fahrenheit <= VALOR_FINAL;
              fahrenheit+= PASO) {
             celsius = 5*(fahrenheit - 32)/9.0;
             System.out.printf("%7d \t %8.3f \n", fahrenheit, celsius);
        }
    }
}

En las zonas de inicialización e incremento/decremento puede aparecer más de una variable. En ese caso deben ir separadas por comas.
Ejemplo:
/*
 * programa que muestra el valor de a, b y su suma mientras que la suma de
 * ambas es menor de 10. En cada iteración el valor de a se incrementa en
 * 1 unidad y el de b en 2
 */
public class Ejemplo3For {
    public static void main(String[] args) {
        int a, b;
        for(a = 1, b = 1; a + b < 10; a++, b+=2){
            System.out.println("a = " + a + "  b = " + b + "  a + b = " + (a+b));
        }
    }
}
La salida de este programa es:
a = 1  b = 1  a + b = 2
a = 2  b = 3  a + b = 5
a = 3  b = 5  a + b = 8
Aunque la instrucción repetitiva for, al igual que las instrucciones while y do- while, se puede utilizar para realizar repeticiones cuando no se sabe a priori el número de pasadas por el bucle, esta instrucción es especialmente indicada para bucles donde se conozca el número de pasadas.
Como regla práctica podríamos decir que las instrucciones while y do-while se utilizan generalmente cuando no se conoce a priori el número de pasadas, y la instrucción for se utiliza generalmente cuando sí se conoce el número de pasadas.
Se ha de tener cuidado con escribir el punto y coma (;) después del paréntesis final del bucle for. Un bucle for generalmente no lleva punto y coma final.
Por ejemplo el bucle:
int i;
for (i = 1; i <= 10; i++);
{
     System.out.println("Elementos de Programación");
}
no visualiza la frase "Elementos de Programación" 10 veces, ni produce un mensaje de error por parte del compilador.
En realidad lo que sucede es que se visualiza una vez la frase "Elementos de Programación", ya que aquí la sentencia for es una sentencia vacía al terminar con un punto y coma (;).
La sentencia for en este caso hace que i empiece en 1 y acabe en 11 y tras esas iteraciones, se ejecuta la sentencia
System.out.println("Elementos de Programación");
3.4 BUCLES INFINITOS EN JAVA
Java permite la posibilidad de construir bucles infinitos, los cuales se ejecutarán indefinidamente, a no ser que provoquemos su interrupción. Tres ejemplos:


for(;;){
    instrucciones
}
for(;true;){
     instrucciones
}
while(true){
        instrucciones
}


3.5 BUCLES ANIDADOS
Bucles anidados son aquellos que incluyen instrucciones for, while o do-while unas dentro de otras.
Debemos tener en cuenta que las variables de control que utilicemos deben ser distintas.
Los anidamientos de estructuras tienen que ser correctos, es decir, que una estructura anidada dentro de otra lo debe estar totalmente.
Ejemplo de programa Java con bucles anidados:
/*
 * Programa que dibuja un rectángulo sólido de asteriscos.
 * El número de filas y columnas se pide por teclado
 */
import java.util.*;
public class Ejemplo1BuclesAnidados {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int filas, columnas;
        //leer número de filas hasta que sea un número > 0
        do{
           System.out.print("Introduce número de filas: ");
           filas = sc.nextInt();
        }while(filas<1);
        //leer número de columnas hasta que sea un número > 0
        do{
           System.out.print("Introduce número de columnas: ");
           columnas = sc.nextInt();
        }while(columnas<1);
        for(int i = 1; i<=filas; i++){    //filas
            for(int j = 1; j<=columnas; j++){   //columnas
                 System.out.print(" * ");
            }
            System.out.println();
        }
       
    }
}
La salida de este programa para filas = 6 y columnas = 10 es:
 *  *  *  *  *  *  *  *  *  *  *  *
 *  *  *  *  *  *  *  *  *  *  *  *
 *  *  *  *  *  *  *  *  *  *  *  *
 *  *  *  *  *  *  *  *  *  *  *  *
 *  *  *  *  *  *  *  *  *  *  *  *
 *  *  *  *  *  *  *  *  *  *  *  *
 Ejemplo de programa Java con bucles anidados:
/*
 * Programa que muestra una tabla con las potencias de x (x x2 x3 x4)
 * para valores de x desde 1 hasta XMAX
 */
public class JavaApplication22 {
    public static void main(String[] args) {
        final int XMAX = 10;
        int x, n;
        //mostrar la cabecera de la tabla
        System.out.printf("%10s%10s%10s%10s%n", "x","x^2","x^3","x^4");
        for (x = 1; x <= XMAX; x++){   //filas
             for (n = 1; n <= 4; n++){   //columnas
                  System.out.printf("%10.0f", Math.pow(x,n));
             }
             System.out.println();
        }
    }
}
         x       x^2       x^3       x^4
         1         1         1         1
         2         4         8        16
         3         9        27        81
         4        16        64       256
         5        25       125       625
         6        36       216      1296
         7        49       343      2401

47 comentarios:

  1. Muchas gracias por compartir esta información, de verdad que está muy bien explicado y me ha ayudado muchísimo.

    ResponderEliminar
  2. Gracias a ti por dejar el comentario y por seguir el blog.

    ResponderEliminar
  3. Hola, Me puedes ayudar con esto?: Digita un numero que muestre la tabla de multiplicar?

    ResponderEliminar
    Respuestas
    1. import java.util.Scanner;
      public class Tabla{
      public static void main(String[]args){

      Scanner valor=new Scanner(System.in);
      Syste.out.print("Ingrese un Numero: ");
      int n=valor.nextInt();
      for(int i=1;i<11;i++)
      System.out.println(n+" * "+i+" = "+(n*i));
      }
      }

      Eliminar
  4. Tengo un problema con una práctica, esta dice: "Pida un nombre y luego que lo imprima 10 veces" cómo le hago? Gracias!

    ResponderEliminar
    Respuestas
    1. hola seria
      import java.util.Scanner;
      public class Nombre{
      public static void main(String[]args){
      Scanner scanner = new Scanner(System.in);
      System.out.println("Escribe tu nombre");
      String nombre = scanner.nextLine();
      for(int k=0;k<10;k++){
      System.out.println(nombre);
      }
      }
      }

      Eliminar
  5. me podrias ayudar con una operacion
    x <= y mostrar un mensaje
    si no x restar con z valor

    ResponderEliminar
  6. A la tu esta excelente toda la info que publicaste, esta rebien explicado y se comprende, ayuda a resolver muchas dudas. Sigue adelante, y gracias por compartir tus conocimientos. Feliz día

    ResponderEliminar
  7. String MensajeSaludo;
    Posteriormente pasamos a crear los constructores con diferentes atributos y funciones lo cual vendría a ser el polimorfismo de la clase Saludo.
    public Saludo(){
    MensajeSaludo="Hola Amigo";
    }
    public Saludo(String Palabra){
    MensajeSaludo=Palabra;
    }
    public Saludo(String Palabra, String Nombre){
    MensajeSaludo=Palabra.concat(" ").concat(Nombre);
    }
    Realizado esto podríamos instanciar a los diferentes constructores de la clase Saludo en nuestro main principal o donde lo requiramos. En este caso usaremos el polimorfismo en nuestro main.
    INSTANCIANDO NUESTRO POLIMORFISMO
    Para usar el primer constructor de nuestro polimorfismo (El que no cuenta con atributos) instanciamos de la siguiente manera:
    Saludo x=new Saludo();
    Para el segundo sería de la misma pero almacenando en otra variable:
    Saludo y=new Saludo("Hola Kevin");
    Y luego tendríamos el tercero:
    Saludo z=new Saludo("Hola", "Kevin Arnold");
    IMPRESIÓN DE CADA CONSTRUCTOR
    Para poder imprimir en pantalla el atributo que fue asignado por los diferentes constructores de nuestra clase Saludo, debemos introducir el siguiente código:
    System.out.println(x.MensajeSaludo);
    System.out.println(y.MensajeSaludo);
    System.out.println(z.MensajeSaludo);
    Donde indicamos con nuestras variables “x”, “y” y “z” los diferentes constructores (Polimorfismo de la clase Saludo). Y el “MensajeSaludo” sería el atributo que tomó diferentes valores según el polimorfismo asignado a cada variable de la clase Saludo.

    ResponderEliminar
  8. sera que me podrías ayudar.....necesito hacer un programa para ingresar 4 usuarios pero ninguno se puede repetir y si se repite tengo que mostrar un mensaje de error y se tendría que eliminar el dato guardado y volver a ingresar uno nuevo...

    ResponderEliminar
  9. PARA EL EJEMPLO Ejemplo2If

    CORRECION DEL CODIGO:

    import java.util.*;

    public class Saludo {
    public static void main(String[] args) {
    // TODO Auto-generated method stub

    Scanner sc = new Scanner(System.in);
    int hora;
    System.out.println("introduce la hora es un valor entero:");
    hora =sc.nextInt();
    if(hora >=0 && hora<=11){
    System.out.println("buenos diaas");
    }else if(hora >=12 && hora <= 21) {

    System.out.println("buenas tardes");

    }else if (hora >=22 && hora < 24) {

    System.out.println("BUENAS LAS TENGAS LAS NOCHES");

    }}}

    ResponderEliminar
    Respuestas
    1. holaa disculpa sabe algún código útil para hacer un programa en java que evalúe lo siguiente:
      que todos los paréntesis se cierren en una expresion matematica. utilizando pila para sacar los parentesis abiertos y compararlos con los cerrados que hay en el string y utilizar una cola para presentar las expresiones correctamente escritas!! muchas gracias..!! espero su respuesta..!!
      2+(2+3) esta esta bien
      2+(7-1] esta esta mal
      2+{1+[3*2-5+2) ] } esta esta bien...
      solo son ejemplos.. agradeceria tu ayuda.. ojala para hoy antes de media noche!! mi correo

      supwendy13@hotmail.com

      Eliminar
  10. alguien me puede ayudar con un programa que muestre los números multiplos de 3 del 1 al 100

    ResponderEliminar
  11. Me puedes ayudar con estos programas: calcular la matricula de estudiantes

    ResponderEliminar
  12. Los datos de entrada son estudiante, cedula, ano(año), costo de laboratorio, bienestar estudiantil, cafeteria, carnet, seguro de vida
    Imprima el nombre del estudiante, cedula y costo de matricula
    Calcular el total de matricula pagada

    ResponderEliminar
  13. Prepare un programa que calcule la suma de los números pares comprendido entre 10 y 40

    ResponderEliminar
  14. me pueden ayudar con esto
    muestren un programa que sume dos matrices ingresando los numeros desde el teclado considerando que la dimension de las matrices es 2 por 2

    ResponderEliminar
  15. ¿Hola me puedes decir qué esta mal en este programa?
    Le hace falta el método principal, ¿serias tan amable de ayudarme a crearlo?

    //aplicacion que imprime el numero de carnet, el nombre, la carrera, y el acumulado de tres parciales de un estudiante
    public class Estudiante{
    String NCarnet, Nombre, Carrera;
    int P1, P2, P3, Acum;

    public Estudiante(){}
    public Estudiante(String NCarnet,String Nombre,String Carrera,int P1,int P2,int P3,int Acum)
    {
    this.NCarnet=NCarnet;
    this.Nombre=Nombre;
    this.Carrera=Carrera;
    this.P1=P1;
    this.P2=P2;
    this.P3=P3;
    }

    public void setNCarnet(String NCarnet){this.NCarnet=NCarnet;}
    public String getNCarnet(){return NCarnet;}

    public void setNombre(String Nombre){this.Nombre=Nombre;}
    public String getNombre(){return Nombre;}

    public void setCarrera(String Carrera){this.Carrera=Carrera;}
    public String getCarrera(){return Carrera;}

    public void setP1(int P1){this.P1=P1;}
    public int getP1(int P1){return P1;}

    public void setP2(int P2){this.P2=P2;}
    public int getP2(int P2){this.P2=P2;}

    public void setP3(int P3){this.P3;}
    public int getP3(int P3){this.P3=P3;}

    public void imprimir(){
    System.out.println("Numero de carnet \n" +getNCarnet());
    System.out.println("Nombre \n" +getNombre());
    System.out.println("Carrera \n" +getCarrera());

    }

    }

    ResponderEliminar
  16. Prepare un programa que calcule la suma de los números pares comprendido entre 10 y 40

    ResponderEliminar
    Respuestas
    1. public class DSumaImpares {

      public static void main(String[] args) {
      int s=10;

      for(int i=12;i<=40;i+=2){
      System.out.print(s+" + "+i+" = ");
      s=s+i;
      System.out.print(s+" \n");
      }
      }
      }

      Eliminar
  17. Prepare un programa que calcule la suma de los números pares comprendido entre 10 y 40


    Por favor :(

    ResponderEliminar
    Respuestas
    1. import java.util.Scanner;


      public class suma {

      /**
      * @param args
      */
      public static void main(String[] args) {
      Scanner teclado = new Scanner(System.in);
      int num = 10,suma = 0;
      for ( int i = 10; i <= 40; i++) {
      if ( i % 2 == 0 ) {
      suma += num;
      System.out.println(i);
      }
      }
      System.out.println(" la suma es: " + suma);

      }

      }

      Eliminar
  18. me puedes ayudar en un programa que pida por teclado una cadena de caracteres en segida pida un caracter de la a-z y en seguida pida otro caracter diferente y el q el programa imprima la cadena de caracteres pero remplazara el primer caracter por el segundo...
    ejemplo:
    cadena de caracteres: hola amigo como estas
    prime caracter introducido: a
    segundo caracter introducido (el que sera remplazado): o
    imprimira en pantalla hala amiga cama estas (remplasara las letras "o "por las "a")
    porfavor responde y ayudame pliss :)

    ResponderEliminar
  19. 7. Construya un programa que guarde la siguiente información de los registros de llamada: Tipo de Plan (A o B), tipo de llamada (local, celular A, celular B y celular C), horario de llamada (mañana-tarde, noche, madrugada), minutos de llamada, costo por minuto, costo por llamada (calculado de la multiplicación de minutos de llamada por costo por minuto).
    Las tarifas de las llamadas se dan de la siguiente manera:
    TIPO PLAN TIPO DE LLAMADA (Costo x minuto) Local Celular A Celular B Celular C
    Tipo A
    0.20
    0.40
    0.45
    0.70
    Tipo B
    0.15
    0.30
    0.35
    0.60
    Por otro lado el costo por minuto se reducirá en un 35% para llamadas locales y 25% para celulares si es que se da en el horario de la madrugada
    Su programa deberá mostrar los siguientes datos:
    a. Número de llamadas con más de 5 minutos y menos de 20 en horario de la noche.
    b. Costos totales de llamada según Tipo de Plan.
    c. Total de minutos realizados en el turno de la noche y madrugada a teléfonos locales con costo de llamada superiores a 10 soles.
    d. En que horario y tipo de Plan se realizo la llamada con mayor costo de llamada
    e. Total de llamadas en minutos realizadas al celular C en horario de mañana-tarde.

    ResponderEliminar
  20. Hola me gustaria saber porque al ejecutar este codigo sale que N1 y N2 son distintos.

    public static void main(String[] args) {
    NumeroEntero n1 = new NumeroEntero(10);
    NumeroEntero n2 = new NumeroEntero(10);

    if (n1 == n2){
    System.out.println("N1 y N2 son iguales");
    }

    if (n1 != n2){
    System.out.println("N1 y N2 son distintos");
    }

    }

    ResponderEliminar
  21. holaaa me puedes ayudar con esto: calcular el mayor de los dos numeros ingresado por teclado graciass

    ResponderEliminar
  22. hola alguien me podria ayudar a solicitar nombre de trabajador y salario porfavor?

    ResponderEliminar
  23. hola me gustaria que por favor me ayudara con este ejercicio...
    En un supermercado han realizado una campaña bastante original. En la caja, una vez calculado el importe de la compra, se le solicita al cliente que extraiga de una bolsa una de las 10 etiquetas que hay dentro. Las esquelas están numeradas del 1 al 10 y tienen premio según la siguiente tabla:
    - Esquelas 1,2,3 se le descuenta al cliente un 2% de la compra.
    - Esquela 7 Se le descuenta un 10%
    - Esquelas 9 y 10 Se le descuenta un 4%
    - Esquelas 8 Se le descuenta 5%
    - Las restantes no tienen premio

    ResponderEliminar
  24. hola alguien me podría ayudar para hacer un programa que lea un número entero positivo y que efectúe los siguientes cálculos: Si el número termina en 0, 3, 7 u ocho, cambie su valor al doble; si termina en 1 ó 9, cambie su valor a la décima parte; de otra manera mantiene su valor.

    ResponderEliminar
  25. Hola me podrian ayudar con esto POR FAVOR: Escribir un programa que lea una lista de “n” alumnos guarde 3 calificaciones parciales por cada alumno (pedir desde teclado) así como su promedio (calcular). Al final muestre el arreglo completo ordenado en base al promedio de mayor a menor.

    ResponderEliminar
  26. tengo un programa pero me pueden decir cual es mi error necesito saber
    public class burbuja {


    public static void main(String[] args){
    int i=0,j=0,temp=0;
    int numeros[]=(10,4,2,0,3,6,8,11);

    for(i=0,i<6-1,i++){

    for(j=1+1;j<6;j++){

    if(numeros[i]>numeros[j]){
    temp=numeros(i);
    numeros(i)= numeros(j);
    numeros(j)=temp;



    }
    }
    }

    for(i=0,1<6,i++){


    System.out.println("los numeros ordenados son + numeros[1]");

    ResponderEliminar
  27. Muchísimas gracias me fue de mucha ayuda los programas, gracias, gracias, gracias.

    ResponderEliminar
  28. hola me podrias ayudar con este siguiente programa ?

    Elabora un programa que solicite por teclado 2 números enteros (a los que puedes nombrar x1 y x2) de modo que la salida del programa te dé cada número introducido multiplicado por 5. Por ejemplo, si introduces como primer número el 7 y después como segundo número el 9 los resultados deben ser, respectivamente, 5 x 7 = 35 y
    5 x 9 = 45

    ResponderEliminar
    Respuestas
    1. int X1,X2;
      leer x1,x2;
      imprimir("5"+"X"+"X1"+"="+(X1*5));
      imprimir("5"+"X"+"X2"+"="+(X2*5));

      Eliminar
  29. Hola me puedes ayudar?
    Un estacionamiento cobra una cuota mínima de $2.00 por estacionarse hasta tres horas. El estacionamiento
    cobra $0.50 adicionales por cada hora o fracción que se pase de tres horas. El cargo máximo para cualquier periodo dado de 24 horas es de $10.00. Suponga que ningún automóvil se estaciona durante más de 24 horas a la vez. Escriba una aplicación que calcule y muestre los cargos por estacionamiento para cada cliente que se haya estacionado ayer. Debe introducir las horas de estacionamiento para cada cliente. El programa debe mostrar el cargo para el cliente actual y debe calcular y mostrar el total corriente de los recibos de ayer. El programa debe utilizar el método calcularCargos para determinar el cargo para cada cliente.

    ResponderEliminar
  30. Hola, me pueden ayudar calculando el MCM y MCD de dos número?
    GRACIAS

    ResponderEliminar
  31. hola, me podrian ayudar apenas estoy iniciando y me dejaron de tarea crear un programa donde yo de la hora y me diga si es (noche,madrugada,tarde,mañana,medio dia) la verdad no se por donde empezar..... agradeceria su ayuda.

    ResponderEliminar
  32. buen dia me puedes ayudar con un ejercicio donde me tieneque dar la suma de los codigos ascii de una palabra gracias

    ResponderEliminar
  33. ola necesito su ayuda.. kiero hacer un codigo k al ejecutarse pida al usuariolos renglones para imprmir un rectangulo de **** , el numerode columnas esta predefinido por 6 solo cambia las filas k intridusca el usuario.

    se puede hacer con un while mientras que el contador sea menor k el num, de filas que imprima lalinea "******"o *_____*, si la fila es la primera o la ultima imprimir ******** si no es esa fila que imprima *_____* GRACIAS

    ResponderEliminar
  34. hola soy principiante quisiera saber si me pueden ayudar con esto escriba una aplicacion que lea 2 enteros, determine si el primero es un
    multiplo del segundo e imprima el resultado.

    ResponderEliminar
  35. Excelentes ejercicios muchas gracias!
    tengo una duda, de un arreglo, quiero determinar si su numero es primo o no... hice este algoritmo pero no me funciona.
    Saludos

    public static void main(String[] args) {
    int [] miArreglo = {6, 4, 1, 10, 2, 9, 7, 3, 5, 8};
    int d=0;
    int n=1;

    for(int i=0;i<miArreglo.length; i++){
    System.out.println("elemento en la posición "+i+" es "+miArreglo[i]);
    }
    while(n<=miArreglo[i])
    {
    if (miArreglo[i]%n==0)
    {
    d=d+1;
    }
    n=n+1;
    }
    if(d==2)
    {
    System.out.println("El número "+miArreglo[i]+" es primo");
    }
    else
    {
    System.out.println("El número "+miArreglo[i]+" no es primo");
    }

    ResponderEliminar
    Respuestas
    1. Gracias Cinthia por el comentario. Para que te funcione este programa, el for debes cerrarlo al final de las instrucciones y no justo después de mostrar el mensaje. Además antes del while asignar a n el valor 1 y d el valor 0 para que cada vez que compruebes un número del arreglo estas variables comiencen con esos valores iniciales

      Eliminar
  36. DISEÑE UN ALGORITMO DE N CIFRAS QUE ME DEVUELVA EL MENOR DE SUS CIFRAS EJEMPLO : 89735 = 35789 SOY NUEVO EN ESTO POR FA AYUDA :D

    ResponderEliminar
  37. Excelente Material de gran ayuda felicitaciones por tomarse el tiempo en desarrollar un blog que explica de una manera sencilla

    ResponderEliminar
  38. Hola pueden ayudarme con un programa en java que me imprima: si es + imprima ( - +) y si es - imprima (+) y asi susesivamente como una especie de árbol.

    +
    - +
    + - +
    - + + - +
    + - + - + + - +

    ResponderEliminar