Ejercicios


Programación Java: Ejercicios Resueltos


Ejercicios Básicos iniciales para principiantes

Java - Ejercicios básicos resueltos es una recopilación de ejercicios sobre los conceptos básicos del lenguaje java: Declaración de variables, literales, tipos de datos, operadores, crear expresiones algebraicas correctas, etc.

El libro es una ampliación de los ejercicios que aparecen en este blog.

El contenido del libro es una recopilación de ejercicios realizados en mis clases de Programación en Java en los ciclos formativos de grado superior Desarrollo de aplicaciones web y Desarrollo de aplicaciones multiplataforma.

En el libro podrás encontrar ejercicios resueltos sobre:
  • Declaración de variables
  • Identificadores válidos o no válidos
  • Literales numéricos, indicando si son válidos o no válidos. Si son válidos determinar su tipo y sistema de numeración empleado
  • Literales de tipo carácter válidos y no válidos
  • Literales de tipo String válidos y no válidos
  • Operadores aritméticos con variables de tipo int
  • Operadores aritméticos con variables de tipo double
  • Operadores aritméticos con variables de tipo char
  • Operadores de tipo lógico
  • Operadores incremento ++ y decremento --
  • Operador condicional ? :
  • Operadores de asignación simples y compuestos
  • Convertir expresiones algebraicas en expresiones algorítmicas
  • Convertir expresiones algorítmicas en expresiones algebraicas
  • Determinar el tipo del resultado de una operación aritmética
  • Escribir expresiones algorítmicas
  • Escribir expresiones algorítmicas de asignación

Las soluciones de los ejercicios incluyen una explicación detallada sobre cómo se ha resuelto.



 
 
 
 
 

 

 



Ejercicios Básicos con Estructura Secuencial







 
 
 

Ejercicios Básicos con Estructura Condicional



 
 




 
 

 

Ejercicios Básicos con Estructura Iterativa o Repetitiva
 
 
 
 

Ejercicios Generales





 
 








 
Ejercicios de bucles anidados


1. Mostrar los números perfectos entre 1 y 1000.

2. Leer un número N y calcular el factorial de los números desde 0 hasta N.

3. Leer un número N y calcular la suma de los factoriales de los números desde 0 hasta N.

4. Programa que muestre en lineas separadas lo siguiente: ZYWXVUTSRQPONMLKJIHGFEDCBA, YWXVUTSRQPONMLKJIHGFEDCBA, WXVUTSRQPONMLKJIHGFEDCBA, ...., DCBA, CBA, BA, A.

5. Mostrar un contador de 5 dígitos. En lugar del dígito 3 se debe mostrar E

6. Mostrar los números primos desde 2 hasta N

Ejercicios para realizar trazas de código

 


Ejercicios con Arrays











Ejercicios con ArrayList






Ejercicios sobre cadenas de caracteres

 
 




Ejercicios sobre Recursividad









Ejercicios sobre ficheros y directorios. Clase File




Ejercicios sobre ficheros de texto












105 comentarios:

  1. Excelente blog,a programar en Java.

    ResponderEliminar
  2. ayuda.............un numero pentagonal esta definido como n(3n-1)/2 para n=1,2,3... y los primeros numeros pentagonales son 1,5,12,22,... escribe un programa que muestre los primeros numeros pentagonales con el siguiente encabezado public static int getNumPentagonal(int n)

    ResponderEliminar
    Respuestas
    1. Claro este ejercicio es de funciones + ciclos + fórmula matemática.

      IDEA

      Un número pentagonal se calcula con:

      P(n)=
      2
      n(3n−1)



      Ejemplo:

      n = 1 → 1
      n = 2 → 5
      n = 3 → 12
      n = 4 → 22
      LO QUE TE PIDEN
      Crear método:
      public static int getNumPentagonal(int n)
      Mostrar los primeros números pentagonales
      CÓDIGO EN JAVA
      import java.util.Scanner;

      public class NumerosPentagonales {

      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      System.out.print("Cuantos numeros pentagonales desea ver?: ");
      int cantidad = sc.nextInt();

      System.out.println("\nNumeros pentagonales:");

      for (int i = 1; i <= cantidad; i++) {
      System.out.print(getNumPentagonal(i) + " ");
      }

      sc.close();
      }

      // METODO PEDIDO
      public static int getNumPentagonal(int n) {
      return (n * (3 * n - 1)) / 2;
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ getNumPentagonal(n) aplica la fórmula
      ✔ for imprime desde 1 hasta n
      ✔ cada iteración genera un número pentagonal

      EJEMPLO
      Entrada:
      5
      Salida:
      Numeros pentagonales:
      1 5 12 22 35

      Eliminar
  3. Hola, he programado en Java y la verdad es un lenguaje súper padre, principalmente porque es prácticamente la base de todo, sabiendo ya programar en Java, es muchísimo muy fácil que alguien o alguna empresa te contrate diciendo que programas en Java.
    Obviamente, tienes que programar en muchos otros lenguajes para que sea facilísimo conseguir trabajo, pero una vez aprendiendo Java, programar se te hará la cosa más sencilla. Para ti que estas leyendo esto, te deseo suerte y espero que sigas siendo un excelente programador o desarrollador.

    ResponderEliminar
  4. ¡Mil gracias!
    Me están viniendo genial estos ejercicios, estoy aprendiendo mucho más rápido y de forma más sólida desde que uso tu blog para complementar los apuntes. En serio, gran trabajo compañero :)

    ResponderEliminar
  5. Una buena paguina sobre que da los ejemplos explica de unas buenas bases de programacion en Java para fundamentar las raizes que se tiene ya con Java felizidades sigue asi

    ResponderEliminar
  6. Hola un favor me pueden ayudar con un ejercicio

    2. Elabore un programa en JAVA, que permita sumar los n primeros términos de la siguiente serie
    S = 51 + 71 – 112 – 133 + 175 + 198 – 2313 – 2921 + 3134 + 3355 – ...

    ResponderEliminar
    Respuestas
    1. Sí este tipo de ejercicio suele ser de serie con patrón de términos + suma de n elementos.

      Pero primero hay algo importante: la serie que te dieron es un poco “rara” escrita así:

      S = 51 + 71 – 112 – 133 + 175 + 198 – 2313 – 2921 + 3134 + 3355 – ...

      - Lo más probable (por ejercicios de este tipo) es que represente dos números unidos, por ejemplo:

      5/1 → 5/1? o 5¹?
      7/1 → 7¹?
      11², 13³, etc.

      Pero en programación normalmente se interpreta como números enteros dados en un arreglo de la serie y solo se suman con signo alternado.

      INTERPRETACIÓN MÁS USADA EN EXÁMENES

      Se toma la serie como una lista de términos:

      51, 71, -112, -133, 175, 198, -2313, -2921, 3134, 3355, ...

      Y se pide:
      -> sumar los n primeros términos

      CÓDIGO EN JAVA
      import java.util.Scanner;

      public class SerieSuma {

      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      // Serie base (puedes ampliarla si el profe quiere más n)
      int[] serie = {
      51, 71, -112, -133, 175, 198, -2313, -2921, 3134, 3355
      };

      System.out.print("Ingrese n (max 10): ");
      int n = sc.nextInt();

      int suma = 0;

      if (n > serie.length) {
      System.out.println("Error: n excede el tamaño de la serie.");
      } else {

      for (int i = 0; i < n; i++) {
      suma += serie[i];
      }

      System.out.println("\nSuma de los " + n + " primeros terminos: " + suma);
      }

      sc.close();
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ La serie se guarda en un arreglo
      ✔ El usuario elige cuántos términos sumar (n)
      ✔ Se suman solo los primeros n valores

      EJEMPLO
      Entrada:
      n = 5
      Cálculo:
      51 + 71 - 112 - 133 + 175 = 52
      Salida:
      Suma de los 5 primeros terminos: 52
      IMPORTANTE

      Si tu profesor quiere que la serie se genere con fórmula, necesito que me confirmes cómo se forma exactamente (porque el enunciado está ambiguo).

      Eliminar
  7. Hacer un programa para ingresar el nombre de un archivo de Texto y luego un carácter y muestre todas las posiciones dentro del archivo en las que se encuentra.

    ResponderEliminar
    Respuestas
    1. Claro este ejercicio es de manejo de archivos + búsqueda de caracteres en Java.

      IDEA
      Pedir el nombre del archivo (ej: texto.txt)
      Leer el archivo carácter por carácter
      Pedir un carácter a buscar
      Mostrar todas las posiciones donde aparece
      IMPORTANTE
      Usamos FileReader
      Contamos posiciones desde 0
      Hay que manejar excepción IOException
      CÓDIGO EN JAVA
      import java.io.FileReader;
      import java.io.IOException;
      import java.util.Scanner;

      public class BuscarCaracterArchivo {

      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      System.out.print("Ingrese el nombre del archivo: ");
      String nombreArchivo = sc.nextLine();

      System.out.print("Ingrese el caracter a buscar: ");
      char buscar = sc.next().charAt(0);

      try {

      FileReader fr = new FileReader(nombreArchivo);

      int c;
      int posicion = 0;
      boolean encontrado = false;

      System.out.println("\nPosiciones donde aparece '" + buscar + "':");

      while ((c = fr.read()) != -1) {

      if ((char) c == buscar) {
      System.out.println("Posicion: " + posicion);
      encontrado = true;
      }

      posicion++;
      }

      if (!encontrado) {
      System.out.println("El caracter no se encontro en el archivo.");
      }

      fr.close();

      } catch (IOException e) {
      System.out.println("Error al leer el archivo: " + e.getMessage());
      }

      sc.close();
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ FileReader → lee el archivo carácter por carácter
      ✔ posicion++ → cuenta cada carácter leído
      ✔ si coincide → se imprime la posición
      ✔ -1 → fin del archivo

      EJEMPLO
      Archivo (texto.txt)
      hola mundo
      Entrada:
      Caracter: o
      Salida:
      Posiciones donde aparece 'o':
      1
      8

      Eliminar
  8. ayudenmee profa

    Se tiene un circuito en serie:, se requiere saber la potencia de dicho circuito.

    Para ello se ingresa el voltaje y las resistencias

    Para obtener el valor total de las resistencias debe de generarse la función
    hallartotalresistencia(cantidad) donde se pasará un parámetro entero, de
    acuerdo a la cantidad debe de ir sumando el valor de las resistencias.

    Luego obtener la corriente para poder hallar la potencia.

    Recordando P=VxI I=V/R

    ResponderEliminar
    Respuestas
    1. import java.util.Scanner;
      public class Circuito{
      public static void main(String[] args) {
      double corriente=0;
      double potencia=0;
      Scanner sc = new Scanner(System.in);
      System.out.println("Introduce la cantidad de resistencias");
      double resistencias=sc.nextDouble();
      System.out.println("Introduce el voltaje");
      double voltaje=sc.nextDouble();

      /*Declaramos una variable para sumar la cantidad de resistencias,
      * si lo declaramos dentro del bucle, no podriamos
      * acceder fuera del bucle a la suma de las las resistencias.
      * Esto es por el ambito.
      */
      double sumaResistencia=0;
      for (double i=0;i<resistencias;i++){

      System.out.println("Introduce el valor de la resitencia "+(i+1));
      double resistencia=sc.nextDouble();


      sumaResistencia=sumaResistencia+resistencia;
      }
      corriente=voltaje/sumaResistencia;
      potencia = voltaje*corriente;
      System.out.println("el valor de la la corriente es "+ corriente +" Ampers");
      System.out.println("el valor de la la potencia es "+ potencia+" Watts");


      }
      }

      Eliminar
    2. Sí este es un ejercicio típico de circuitos en serie + funciones en Java.

      IDEA DEL PROBLEMA
      En serie:
      Las resistencias se suman
      Luego usamos:
      I=
      R
      total


      V


      P=V×I
      PASOS
      Leer voltaje
      Leer cuántas resistencias hay
      Sumar resistencias en una función
      Calcular corriente
      Calcular potencia
      CÓDIGO EN JAVA
      import java.util.Scanner;

      public class CircuitoSerie {

      static Scanner sc = new Scanner(System.in);

      public static void main(String[] args) {

      System.out.print("Ingrese el voltaje: ");
      double voltaje = sc.nextDouble();

      System.out.print("Cantidad de resistencias: ");
      int n = sc.nextInt();

      double rTotal = hallarTotalResistencia(n);

      double corriente = voltaje / rTotal;

      double potencia = voltaje * corriente;

      System.out.println("\n--- RESULTADOS ---");
      System.out.println("Resistencia total: " + rTotal);
      System.out.println("Corriente: " + corriente);
      System.out.println("Potencia: " + potencia);
      }

      // FUNCION PARA SUMAR RESISTENCIAS
      public static double hallarTotalResistencia(int cantidad) {

      double suma = 0;

      for (int i = 1; i <= cantidad; i++) {
      System.out.print("Ingrese resistencia " + i + ": ");
      double r = sc.nextDouble();
      suma += r;
      }

      return suma;
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ En serie: resistencias se suman
      ✔ hallarTotalResistencia() recibe cuántas resistencias hay
      ✔ Luego se leen y se suman
      ✔ Se calcula:

      I = V / R
      P = V × I
      EJEMPLO
      Entrada:
      Voltaje = 12
      Resistencias = 3
      R1 = 2
      R2 = 3
      R3 = 1
      Cálculo:
      Rtotal = 6
      I = 12 / 6 = 2
      P = 12 * 2 = 24
      Salida:
      Resistencia total: 6.0
      Corriente: 2.0
      Potencia: 24.0

      Eliminar
  9. Buenas noches por favor alguien me podria colaborar con el siguiente ejercicio Ana va a la universidad cada A días, Bernardo cada B días, y Carlos cada C días. Si todos van a la universidad hoy, ¿dentro de cuántos días irán nuevamente los tres?

    ResponderEliminar
    Respuestas
    1. Este ejercicio se resuelve encontrando el Mínimo Común Múltiplo (MCM) de A, B y C.

      IDEA

      Si:

      Ana va cada A días
      Bernardo cada B días
      Carlos cada C días

      Entonces volverán a coincidir en la universidad en:

      MCM(A, B, C)

      CÓDIGO EN JAVA
      import java.util.Scanner;

      public class ReunionUniversidad {

      // Metodo para calcular MCD (Euclides)
      public static int mcd(int a, int b) {
      while (b != 0) {
      int temp = b;
      b = a % b;
      a = temp;
      }
      return a;
      }

      // Metodo para calcular MCM de dos numeros
      public static int mcm(int a, int b) {
      return (a * b) / mcd(a, b);
      }

      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      System.out.print("Ingrese dias de Ana (A): ");
      int A = sc.nextInt();

      System.out.print("Ingrese dias de Bernardo (B): ");
      int B = sc.nextInt();

      System.out.print("Ingrese dias de Carlos (C): ");
      int C = sc.nextInt();

      int mcmAB = mcm(A, B);
      int resultado = mcm(mcmAB, C);

      System.out.println("\nSe volveran a encontrar en " + resultado + " dias.");

      sc.close();
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ Primero calculamos MCM de A y B
      ✔ Luego ese resultado con C
      ✔ El MCM indica cada cuánto coinciden todos

      EJEMPLO
      Entrada:
      A = 2
      B = 3
      C = 4
      Salida:
      Se volveran a encontrar en 12 dias.

      Eliminar
  10. Voltear un cuadrado de letras hacia la izquierda o derecha hasta pulsar salir.
    Ejemplo de ejecución:

    A B

    C D
    Elije una opción(d-derecha, i-izquierda, s-salir):d
    C A

    D B
    Elije una opción(d-derecha, i-izquierda, s-salir):s


    El cuadrado imaginario formado por las letras gira en sentido de las agujas del reloj o el contrario según lo que se elija.

    ResponderEliminar
    Respuestas
    1. Este ejercicio consiste en una matriz 2x2 de letras que se “rota”:

      derecha → rotación en sentido horario
      izquierda → rotación antihoraria
      salir → termina
      IDEA

      Matriz inicial:

      A B
      C D

      Representación:

      [ A B ]
      [ C D ]
      Rotaciones
      Derecha (horario)
      C A
      D B
      Izquierda (antihorario)
      B D
      A C
      CÓDIGO EN JAVA
      import java.util.Scanner;

      public class CuadradoLetras {

      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      char[][] m = {
      {'A', 'B'},
      {'C', 'D'}
      };

      char op;

      do {
      // Mostrar matriz
      System.out.println("\nMatriz actual:");
      for (int i = 0; i < 2; i++) {
      for (int j = 0; j < 2; j++) {
      System.out.print(m[i][j] + " ");
      }
      System.out.println();
      }

      System.out.print("\nElije una opcion (d-derecha, i-izquierda, s-salir): ");
      op = sc.next().charAt(0);

      char[][] temp = new char[2][2];

      if (op == 'd') {
      // ROTACION DERECHA (HORARIA)
      temp[0][0] = m[1][0];
      temp[0][1] = m[0][0];
      temp[1][0] = m[1][1];
      temp[1][1] = m[0][1];

      m = temp;
      }

      else if (op == 'i') {
      // ROTACION IZQUIERDA (ANTIHORARIA)
      temp[0][0] = m[0][1];
      temp[0][1] = m[1][1];
      temp[1][0] = m[0][0];
      temp[1][1] = m[1][0];

      m = temp;
      }

      } while (op != 's');

      System.out.println("Programa finalizado.");
      sc.close();
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ La matriz siempre es 2x2
      ✔ Se crea una temp para no perder datos
      ✔ Se reasignan posiciones según rotación
      ✔ do-while permite repetir hasta salir

      EJEMPLO
      Inicio:
      A B
      C D
      Opción: d
      C A
      D B
      Opción: i
      A B
      C D

      Eliminar
  11. Urgente!! Crea un programa que pida un número por teclado y muestre un mensaje diciendo si el número es o no primo. Como pista, debes comprobar que el número no es divisible entre ningún número entre 2 y el número-1. Se hace con eclipse

    ResponderEliminar
    Respuestas
    1. Sí este es un ejercicio clásico de números primos.

      IDEA

      Un número es primo si:

      Es mayor que 1
      Solo es divisible entre 1 y él mismo

      Entonces comprobamos si tiene divisores entre 2 y n-1.

      CÓDIGO EN JAVA (Eclipse)
      import java.util.Scanner;

      public class NumeroPrimo {
      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      System.out.print("Ingrese un numero: ");
      int num = sc.nextInt();

      boolean esPrimo = true;

      if (num <= 1) {
      esPrimo = false;
      } else {

      for (int i = 2; i < num; i++) {
      if (num % i == 0) {
      esPrimo = false;
      break;
      }
      }
      }

      if (esPrimo) {
      System.out.println("El numero es primo.");
      } else {
      System.out.println("El numero NO es primo.");
      }

      sc.close();
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ for (i = 2; i < num) → prueba divisores
      ✔ num % i == 0 → si divide exacto, NO es primo
      ✔ break → detiene el ciclo si ya no es primo

      EJEMPLOS
      Entrada:
      7
      Salida:
      El numero es primo.
      Entrada:
      10
      Salida:
      El numero NO es primo.
      MEJORA (IMPORTANTE)

      Versión más eficiente (opcional para nota alta):

      for (int i = 2; i <= Math.sqrt(num); i++)

      Eliminar
  12. Buenísimo. Estoy haciendo un curso de programación y esto es exactamente lo que me hacía falta para completarlo.

    Muchas gracias

    ResponderEliminar
  13. hola como es este ejrcio
    Dados 3 números enteros de 0 a 100, se pide indicar:
    1) si hay dos iguales
    2) si los 3 números son mayores a 50
    3) si alguno de los números es menor a 10
    el codigo

    ResponderEliminar
    Respuestas
    1. Sí este ejercicio es de condiciones con if (muy típico de examen).

      IDEA

      Se leen 3 números y se evalúan 3 casos:

      1) Dos números iguales
      a == b OR a == c OR b == c
      2) Los 3 son > 50
      a > 50 && b > 50 && c > 50
      3) Alguno es < 10
      a < 10 || b < 10 || c < 10
      CÓDIGO EN JAVA
      import java.util.Scanner;

      public class TresNumeros {
      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      System.out.print("Ingrese el primer numero: ");
      int a = sc.nextInt();

      System.out.print("Ingrese el segundo numero: ");
      int b = sc.nextInt();

      System.out.print("Ingrese el tercer numero: ");
      int c = sc.nextInt();

      System.out.println("\n--- RESULTADOS ---");

      // 1. Dos iguales
      if (a == b || a == c || b == c) {
      System.out.println("Hay al menos dos numeros iguales.");
      } else {
      System.out.println("No hay numeros iguales.");
      }

      // 2. Todos mayores a 50
      if (a > 50 && b > 50 && c > 50) {
      System.out.println("Los tres numeros son mayores a 50.");
      } else {
      System.out.println("No todos son mayores a 50.");
      }

      // 3. Alguno menor a 10
      if (a < 10 || b < 10 || c < 10) {
      System.out.println("Al menos un numero es menor a 10.");
      } else {
      System.out.println("Ningun numero es menor a 10.");
      }

      sc.close();
      }
      }
      🧠 EXPLICACIÓN SIMPLE

      ✔ || = O (cualquiera cumple)
      ✔ && = Y (todos cumplen)
      ✔ == = igualdad

      EJEMPLO
      Entrada:
      60 60 8
      Salida:
      Hay al menos dos numeros iguales.
      No todos son mayores a 50.
      Al menos un numero es menor a 10.

      Eliminar
  14. Me pueden ayudar con este problema por favor , no me sale.
    Pedir 10 números al usuario e imprimirlos en forma ascendente. (utilizar un arreglo para el ingreso de los datos).

    ResponderEliminar
    Respuestas
    1. No se acostumbre a que le resuelvan los problemas, que le ayuden con las dudas, pero no que le hagan la tarea o no prendera.
      Su problema es muy sencillo, solo declare el array y rellénelo con un for y con un JOptionPane pide los números, los ordena con un Array.sort y los imprime con un for each.

      Eliminar
    2. Yo te ayudo, este es un ejercicio básico de arreglos + ordenamiento ascendente.

      La idea es:

      Guardar 10 números en un arreglo
      Ordenarlos de menor a mayor
      Imprimirlos
      CÓDIGO EN JAVA
      import java.util.Scanner;
      import java.util.Arrays;

      public class OrdenAscendente {
      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      int[] numeros = new int[10];

      // INGRESO DE DATOS
      for (int i = 0; i < 10; i++) {
      System.out.print("Ingrese numero " + (i + 1) + ": ");
      numeros[i] = sc.nextInt();
      }

      // ORDENAR
      Arrays.sort(numeros);

      // IMPRIMIR
      System.out.println("\nNumeros en orden ascendente:");

      for (int i = 0; i < 10; i++) {
      System.out.print(numeros[i] + " ");
      }

      sc.close();
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ int[] numeros = new int[10] → arreglo de 10
      ✔ for → ingresar datos
      ✔ Arrays.sort() → ordena de menor a mayor
      ✔ otro for → imprimir

      EJEMPLO
      Entrada:
      8 3 10 1 7 6 2 9 4 5
      Salida:
      1 2 3 4 5 6 7 8 9 10

      Eliminar
  15. Holaaa todos. Podrian ayudar me con este ejercicio, gracias. capturar n numeros aleatorios del 1 al 100 en un arreglo sin repetir, luego
    ordenarlos con el metodo shell y mostrar los numeros generados

    ResponderEliminar
    Respuestas
    1. Claro este ejercicio tiene 3 partes importantes:

      Generar n números aleatorios (1–100) sin repetir
      Ordenarlos con Shell Sort
      Mostrar el arreglo
      IDEA DEL PROBLEMA
      Usamos un arreglo int[]
      Para evitar repetidos: verificamos antes de guardar
      Luego aplicamos Shell Sort
      Finalmente imprimimos
      CÓDIGO EN JAVA
      import java.util.Random;
      import java.util.Scanner;

      public class ShellSinRepetir {

      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);
      Random rand = new Random();

      System.out.print("Ingrese N: ");
      int n = sc.nextInt();

      int[] arr = new int[n];

      // GENERAR SIN REPETIR
      for (int i = 0; i < n; i++) {

      int num;
      boolean repetido;

      do {
      num = rand.nextInt(100) + 1; // 1 a 100
      repetido = false;

      for (int j = 0; j < i; j++) {
      if (arr[j] == num) {
      repetido = true;
      break;
      }
      }

      } while (repetido);

      arr[i] = num;
      }

      // SHELL SORT
      int salto = n / 2;

      while (salto > 0) {

      for (int i = salto; i < n; i++) {
      int temp = arr[i];
      int j = i;

      while (j >= salto && arr[j - salto] > temp) {
      arr[j] = arr[j - salto];
      j -= salto;
      }

      arr[j] = temp;
      }

      salto = salto / 2;
      }

      // MOSTRAR RESULTADO
      System.out.println("\nNumeros generados y ordenados:");

      for (int i = 0; i < n; i++) {
      System.out.print(arr[i] + " ");
      }

      sc.close();
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ Random → genera números 1–100
      ✔ ciclo interno → evita repetidos
      ✔ Shell Sort:

      compara con saltos
      va reduciendo el salto hasta 1
      EJEMPLO
      Entrada:
      10
      Salida:
      Numeros generados y ordenados:
      3 7 12 18 25 41 56 70 88 95

      Eliminar
  16. Realizar un programa en el cual el usuario deberá introducir la hora, minuto y segundo. Y deberá mostrar la hora un segundo después en el sig. Formato. 12:30:31
    Me podrían ayudar porfa...

    ResponderEliminar
    Respuestas
    1. Sí este ejercicio consiste en sumar 1 segundo a una hora y ajustar correctamente minutos y horas cuando haya “desbordes”.

      IDEA

      Se ingresan:

      hora
      minuto
      segundo

      Luego:

      sumar 1 segundo

      Reglas:

      Si segundos llegan a 60 → vuelven a 0 y suman 1 minuto
      Si minutos llegan a 60 → vuelven a 0 y suman 1 hora
      Si horas llegan a 24 → vuelven a 0
      CÓDIGO EN JAVA
      import java.util.Scanner;

      public class SumarSegundo {
      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      System.out.print("Ingrese hora: ");
      int hora = sc.nextInt();

      System.out.print("Ingrese minutos: ");
      int minuto = sc.nextInt();

      System.out.print("Ingrese segundos: ");
      int segundo = sc.nextInt();

      // sumar un segundo
      segundo++;

      // ajuste de segundos
      if (segundo == 60) {
      segundo = 0;
      minuto++;
      }

      // ajuste de minutos
      if (minuto == 60) {
      minuto = 0;
      hora++;
      }

      // ajuste de horas
      if (hora == 24) {
      hora = 0;
      }

      // mostrar resultado en formato 00:00:00
      System.out.printf("Hora actualizada: %02d:%02d:%02d\n", hora, minuto, segundo);

      sc.close();
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ Se suma 1 segundo
      ✔ Si llega a 60 → reinicia y suma al siguiente nivel
      ✔ %02d → muestra con dos dígitos (ej: 09 en vez de 9)

      EJEMPLOS
      Entrada:
      12 30 31
      Salida:
      12:30:32
      Entrada:
      23 59 59
      Salida:
      00:00:00

      Eliminar
  17. Una empresa tiene 15 tiendas y necesita crear un algoritmo que lea las ventas mensuales de los 15 tiendas con valores aletarios de 1000-5000. Calcule la media de ventas y obtenga un listado de los almacenes cuyas ventas mensuales son superiores a la media. Muestre la mayor y menor venta.

    ResponderEliminar
    Respuestas
    1. Claro este ejercicio es de arreglos + números aleatorios + cálculos estadísticos.

      IDEA DEL PROBLEMA
      15 tiendas
      ventas aleatorias entre 1000 y 5000
      calcular:
      media (promedio)
      mayor venta
      menor venta
      tiendas con ventas > media
      CÓDIGO EN JAVA
      import java.util.Random;

      public class TiendasVentas {
      public static void main(String[] args) {

      int[] ventas = new int[15];
      Random rand = new Random();

      double suma = 0;
      int mayor, menor;

      // Generar ventas aleatorias
      for (int i = 0; i < 15; i++) {
      ventas[i] = rand.nextInt(4001) + 1000; // 1000 a 5000
      suma += ventas[i];
      }

      // Inicializar mayor y menor
      mayor = ventas[0];
      menor = ventas[0];

      for (int i = 0; i < 15; i++) {
      if (ventas[i] > mayor) {
      mayor = ventas[i];
      }
      if (ventas[i] < menor) {
      menor = ventas[i];
      }
      }

      double media = suma / 15;

      // RESULTADOS
      System.out.println("VENTAS DE LAS 15 TIENDAS:\n");

      for (int i = 0; i < 15; i++) {
      System.out.println("Tienda " + (i + 1) + ": " + ventas[i]);
      }

      System.out.println("\n--- ANALISIS ---");
      System.out.println("Media de ventas: " + media);
      System.out.println("Mayor venta: " + mayor);
      System.out.println("Menor venta: " + menor);

      System.out.println("\nTiendas con ventas superiores a la media:");

      for (int i = 0; i < 15; i++) {
      if (ventas[i] > media) {
      System.out.println("Tienda " + (i + 1) + " -> " + ventas[i]);
      }
      }
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ Random genera ventas automáticas
      ✔ suma → para calcular media
      ✔ mayor / menor → se comparan en ciclo
      ✔ segundo recorrido → filtra ventas > media

      EJEMPLO (SALIDA)
      Tienda 1: 3200
      Tienda 2: 4500
      Tienda 3: 1800
      ...

      Media: 3100
      Mayor: 4900
      Menor: 1200

      Tiendas superiores a la media:
      Tienda 2 -> 4500
      Tienda 7 -> 3800

      Eliminar
  18. ayuda es para un ejercicio de java
    Crear un programa en Java que pida al usuario que ingrese números con la condición de que el siguiente sea siempre mayor al anterior. Cuando el usuario haya ingresado un número que no cumpla la condición anterior o luego de haber ingresado 10 números, dejar de pedir números e imprimir cuántos múltiplos de 3 se ingresaron en total.

    ResponderEliminar
    Respuestas
    1. Claro este ejercicio usa un ciclo con condición de corte y validación de orden creciente.

      IDEA DEL PROBLEMA
      Se ingresan números uno por uno
      Deben ser siempre mayores que el anterior
      El ciclo se detiene si:
      el número NO es mayor al anterior, o
      se ingresan 10 números
      Al final: contar cuántos son múltiplos de 3
      CÓDIGO EN JAVA
      import java.util.Scanner;

      public class NumerosCrecientes {
      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      int contadorMultiplos3 = 0;
      int contadorNumeros = 0;

      int anterior = 0;
      int numero;

      System.out.print("Ingrese un numero: ");
      numero = sc.nextInt();

      anterior = numero;
      contadorNumeros++;

      if (numero % 3 == 0) {
      contadorMultiplos3++;
      }

      while (contadorNumeros < 10) {

      System.out.print("Ingrese un numero mayor que " + anterior + ": ");
      numero = sc.nextInt();

      if (numero <= anterior) {
      System.out.println("Numero no valido (no es mayor). Fin del programa.");
      break;
      }

      contadorNumeros++;

      if (numero % 3 == 0) {
      contadorMultiplos3++;
      }

      anterior = numero;
      }

      System.out.println("\n--- RESULTADOS ---");
      System.out.println("Numeros ingresados: " + contadorNumeros);
      System.out.println("Multiplos de 3: " + contadorMultiplos3);

      sc.close();
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ anterior guarda el último número
      ✔ cada nuevo número debe ser mayor
      ✔ si no lo es → se detiene el programa
      ✔ se cuentan múltiplos de 3 con % 3 == 0
      ✔ máximo 10 números

      EJEMPLO
      Entrada:
      5
      8
      12
      11 → (se detiene)
      Salida:
      Multiplos de 3: 1
      Numeros ingresados: 3

      Eliminar
  19. Ingresá un número por teclado en el rango de 0
    a 99 y determiná si tiene uno o dos dígitos.

    ResponderEliminar
    Respuestas
    1. Claro este ejercicio es sencillo y usa condiciones if.

      IDEA
      Si el número está entre 0 y 9 → tiene 1 dígito
      Si está entre 10 y 99 → tiene 2 dígitos
      Si está fuera del rango → mensaje de error
      CÓDIGO EN JAVA
      import java.util.Scanner;

      public class DigitosNumero {
      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      System.out.print("Ingrese un numero entre 0 y 99: ");
      int num = sc.nextInt();

      if (num >= 0 && num <= 9) {
      System.out.println("El numero tiene 1 digito.");
      }
      else if (num >= 10 && num <= 99) {
      System.out.println("El numero tiene 2 digitos.");
      }
      else {
      System.out.println("Error: numero fuera del rango permitido.");
      }

      sc.close();
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ 0 - 9 → 1 dígito
      ✔ 10 - 99 → 2 dígitos
      ✔ if / else if → decide el caso

      EJEMPLOS
      Entrada:
      7
      Salida:
      El numero tiene 1 digito.
      Entrada:
      45
      Salida:
      El numero tiene 2 digitos.

      Eliminar
  20. Ayudaaa!!! me ayudan con este programa
    1. Leer un número entre (1 y 9,999,999,999,999)
    2. El programa debe indicar cuantos dígitos componen el número
    3. El programa debe escribir el número leído
    4. El programa debe escribir el número en forma inversa

    Ejemplo: se lee 37914
    Se indica que tiene 5 dígitos
    y se escribe que el número leído es 37914 y en forma inversa 41973

    ResponderEliminar
    Respuestas
    1. Este ejercicio es de manejo de números grandes y dígitos. Lo más fácil es trabajarlo como String, porque el número puede ser muy grande (hasta billones), y long puede quedarse corto.

      IDEA

      Con String podemos:

      Contar dígitos → length()
      Mostrar número → tal cual
      Invertirlo → recorrer al revés
      CÓDIGO EN JAVA
      import java.util.Scanner;

      public class NumeroInverso {
      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      System.out.print("Ingrese un numero (1 a 9,999,999,999,999): ");
      String numero = sc.nextLine();

      // 1. Cantidad de dígitos
      int digitos = numero.length();

      // 2. Invertir número
      String inverso = "";

      for (int i = numero.length() - 1; i >= 0; i--) {
      inverso += numero.charAt(i);
      }

      // RESULTADOS
      System.out.println("\n--- RESULTADOS ---");
      System.out.println("Numero ingresado: " + numero);
      System.out.println("Cantidad de digitos: " + digitos);
      System.out.println("Numero invertido: " + inverso);

      sc.close();
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ String numero → permite números grandes
      ✔ length() → cuenta dígitos
      ✔ charAt(i) → obtiene cada dígito
      ✔ ciclo inverso → construye el número al revés

      EJEMPLO
      Entrada:
      37914
      Salida:
      Cantidad de digitos: 5
      Numero ingresado: 37914
      Numero invertido: 41973
      EXTRA (MEJOR NIVEL)

      Si tu profe quiere versión matemática (sin String), también se puede hacer con % 10 y / 10, pero esta versión es la más segura para números grandes.

      Eliminar
  21. Buenas noches disculpe me puede ayudar con este ejercicio:
    Ingresar dos números enteros y realizar las operaciones básicas. Debe permitir seleccionar desde un menú las opciones.
    1.suma
    2.Resta
    3. Multiplicacion
    4.Division

    ResponderEliminar
    Respuestas
    1. Sí este es un ejercicio clásico de menú con operaciones básicas en Java.

      IDEA
      Ingresas 2 números
      Muestras un menú
      Según la opción:
      suma
      resta
      multiplicación
      división
      Se usa switch
      IMPORTANTE
      En división hay que evitar dividir entre 0
      CÓDIGO EN JAVA
      import java.util.Scanner;

      public class CalculadoraMenu {
      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      System.out.print("Ingrese el primer numero: ");
      double num1 = sc.nextDouble();

      System.out.print("Ingrese el segundo numero: ");
      double num2 = sc.nextDouble();

      System.out.println("\n--- MENU ---");
      System.out.println("1. Suma");
      System.out.println("2. Resta");
      System.out.println("3. Multiplicacion");
      System.out.println("4. Division");

      System.out.print("Seleccione una opcion: ");
      int op = sc.nextInt();

      double resultado;

      switch (op) {

      case 1:
      resultado = num1 + num2;
      System.out.println("Resultado: " + resultado);
      break;

      case 2:
      resultado = num1 - num2;
      System.out.println("Resultado: " + resultado);
      break;

      case 3:
      resultado = num1 * num2;
      System.out.println("Resultado: " + resultado);
      break;

      case 4:
      if (num2 == 0) {
      System.out.println("Error: no se puede dividir entre cero");
      } else {
      resultado = num1 / num2;
      System.out.println("Resultado: " + resultado);
      }
      break;

      default:
      System.out.println("Opcion invalida");
      }

      sc.close();
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ switch selecciona la operación
      ✔ case = cada opción del menú
      ✔ double permite decimales
      ✔ validación evita división entre 0

      EJEMPLO
      Entrada:
      num1 = 10
      num2 = 5
      op = 3
      Salida:
      Resultado: 50.0

      Eliminar
  22. una ayuda

    Realiza un código en lenguaje java para resolver el siguiente
    ejercicio

    • Si a, b y c son variables enteras con valores a= 8, b= 3, c= -5, y d es
    un valor asignado por el usuario, determina el valor de las siguientes
    expresiones aritméticas:

    (2 * b + 3 * (a – c)) /d

    ResponderEliminar
    Respuestas
    1. Claro xd este ejercicio es directo: solo debes definir las variables, leer d y evaluar la expresión.

      Datos del problema
      a = 8
      b = 3
      c = -5
      d = (ingresado por el usuario)

      Expresión:

      (2∗b+3∗(a−c))/d
      IMPORTANTE

      Como hay división, debemos evitar dividir entre 0.

      CÓDIGO EN JAVA
      import java.util.Scanner;

      public class ExpresionAritmetica {
      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      int a = 8;
      int b = 3;
      int c = -5;

      System.out.print("Ingrese el valor de d: ");
      int d = sc.nextInt();

      if (d == 0) {
      System.out.println("Error: no se puede dividir entre cero.");
      } else {

      int resultado = (2 * b + 3 * (a - c)) / d;

      System.out.println("Resultado de la expresion: " + resultado);
      }

      sc.close();
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ Primero se asignan a, b, c
      ✔ Luego se lee d
      ✔ Se evalúa la expresión
      ✔ Se controla división entre 0

      EJEMPLO
      Entrada:
      d = 2
      Cálculo:
      2*b = 6
      a - c = 8 - (-5) = 13
      3*(a-c) = 39
      6 + 39 = 45
      45 / 2 = 22
      Salida:
      Resultado de la expresion: 22

      Eliminar
  23. Hola buenas noches, estoy iniciando en esto de la programación el Java NetBeans, quisiera saber si me podrían orientar o ayudar como hacer estos programas por favor.

    Programa 1. Define un arreglo de 10 posiciones
    1. llénalo con valores arbitrarios.
    2. Imprime los valores
    3. Imprime los siguientes datos:
    a) Suma de todos los valores
    b) el valor máximo
    c) el valor mínimo
    d) el promedio de todos los valores

    Programa 2: Teniendo un vector1 con 10 valores arbitrarios:
    a) Crear vector2 con los números elevados al cuadrado de vector1, e imprimirlos en pantalla
    b) Crear vector3 con el cubo de los números de vector1 e imprimirlos en pantalla

    Programa 3: Crear un vector llamado radio que contenga el radio de 12 círculos.
    y en otro vector calcular y asignar el área de cada radio.
    Imprimirlo en pantalla.

    ResponderEliminar
    Respuestas
    1. public class Vector {
      public static void main(String[] args) {
      int[] vector1 = {5, 10, 15, 20, 25, 30, 35, 40, 45, 50};
      int[] vector2 = new int[vector1.length];
      int[] vector3 = new int[vector1.length];

      for (int i = 0; i < vector1.length; i++) {
      vector2[i] = vector1[i] * vector1[i];
      vector3[i] = vector1[i] * vector1[i] * vector1[i];
      }

      System.out.print("Vector2: ");
      for (int i = 0; i < vector1.length; i++) {
      System.out.print(vector2[i] + " ");
      }
      System.out.println();

      System.out.print("Vector3: ");
      for (int i = 0; i < vector1.length; i++) {
      System.out.print(vector3[i] + " ");
      }
      System.out.println();
      }
      }

      Salida:
      Vector2: 25 100 225 400 625 900 1225 1600 2025 2500
      Vector3: 125 1000 3375 8000 15625 27000 42875 64000 91125 125000

      Eliminar
    2. Estos ejercicios son ideales para empezar con arreglos (vectores) en Java.

      PROGRAMA 1: Arreglo de 10 posiciones
      ✔️ Qué hace:
      Llena el arreglo
      Lo imprime
      Calcula:
      suma
      máximo
      mínimo
      promedio
      Código Java
      public class Programa1 {
      public static void main(String[] args) {

      int[] numeros = {5, 12, 3, 8, 20, 7, 1, 15, 9, 10};

      int suma = 0;
      int max = numeros[0];
      int min = numeros[0];

      System.out.println("Valores del arreglo:");

      for (int i = 0; i < numeros.length; i++) {
      System.out.print(numeros[i] + " ");

      suma += numeros[i];

      if (numeros[i] > max) {
      max = numeros[i];
      }

      if (numeros[i] < min) {
      min = numeros[i];
      }
      }

      double promedio = (double) suma / numeros.length;

      System.out.println("\n\nResultados:");
      System.out.println("Suma: " + suma);
      System.out.println("Maximo: " + max);
      System.out.println("Minimo: " + min);
      System.out.println("Promedio: " + promedio);
      }
      }
      PROGRAMA 2: Cuadrado y cubo
      ✔️ Qué hace:
      vector1 → valores
      vector2 → cuadrados
      vector3 → cubos
      Código Java
      public class Programa2 {
      public static void main(String[] args) {

      int[] vector1 = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
      int[] vector2 = new int[10];
      int[] vector3 = new int[10];

      System.out.println("Vector original, cuadrado y cubo:\n");

      for (int i = 0; i < vector1.length; i++) {

      vector2[i] = vector1[i] * vector1[i]; // cuadrado
      vector3[i] = vector1[i] * vector1[i] * vector1[i]; // cubo

      System.out.println("Numero: " + vector1[i]
      + " | Cuadrado: " + vector2[i]
      + " | Cubo: " + vector3[i]);
      }
      }
      }
      PROGRAMA 3: Áreas de círculos
      ✔️ Fórmula:
      A
      ˊ
      rea=π×r
      2
      Código Java
      public class Programa3 {
      public static void main(String[] args) {

      double[] radio = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
      double[] area = new double[12];

      System.out.println("Radio y area de circulos:\n");

      for (int i = 0; i < radio.length; i++) {

      area[i] = Math.PI * radio[i] * radio[i];

      System.out.println("Radio: " + radio[i]
      + " | Area: " + area[i]);
      }
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ int[] o double[] → arreglos
      ✔ length → tamaño del arreglo
      ✔ Math.PI → valor de π
      ✔ for → recorrer posiciones

      CONSEJO IMPORTANTE

      Si estás empezando en NetBeans:

      ✔ Primero escribe el arreglo
      ✔ Luego el for
      ✔ Después agregas cálculos

      Eliminar
  24. por favor ayuda!!!!
    En este problema, debe leer un valor entero y calcular el menor número posible de billetes en los que se puede descomponer el valor. Los posibles billetes son 100, 50, 20, 10, 5, 2 e 1. Imprima el valor leído y la lista de billetes.

    ResponderEliminar
    Respuestas
    1. Este es un problema clásico de descomposición en billetes (algoritmo voraz / greedy). La idea es ir usando primero los billetes más grandes.

      IDEA

      Dado un valor, por ejemplo:

      Valor = 186

      Se descompone así:

      1 billete de 100
      1 billete de 50
      1 billete de 20
      1 billete de 10
      1 moneda de 5
      1 moneda de 1
      BILLETES DISPONIBLES
      100, 50, 20, 10, 5, 2, 1
      PROGRAMA EN JAVA
      import java.util.Scanner;

      public class Billetes {
      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      System.out.print("Ingrese un valor entero: ");
      int valor = sc.nextInt();

      int original = valor;

      int b100 = valor / 100;
      valor = valor % 100;

      int b50 = valor / 50;
      valor = valor % 50;

      int b20 = valor / 20;
      valor = valor % 20;

      int b10 = valor / 10;
      valor = valor % 10;

      int b5 = valor / 5;
      valor = valor % 5;

      int b2 = valor / 2;
      valor = valor % 2;

      int b1 = valor;

      System.out.println("\nValor ingresado: " + original);

      System.out.println("Billetes:");

      System.out.println("100: " + b100);
      System.out.println("50: " + b50);
      System.out.println("20: " + b20);
      System.out.println("10: " + b10);
      System.out.println("5: " + b5);
      System.out.println("2: " + b2);
      System.out.println("1: " + b1);

      sc.close();
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ Se divide el número entre cada billete
      ✔ Se guarda cuántos caben
      ✔ Se usa el residuo % para continuar

      EJEMPLO
      Entrada:
      186
      Salida:
      Valor ingresado: 186

      Billetes:
      100: 1
      50: 1
      20: 1
      10: 1
      5: 1
      2: 0
      1: 1
      EXTRA (IMPORTANTE)

      Este es un algoritmo tipo:
      ✔ “greedy” (siempre toma el billete más grande posible)

      Eliminar
  25. : Hacer un programa que imprima la suma de
    todos los números del 1 al 100

    ResponderEliminar
    Respuestas
    1. Este ejercicio es directo: solo necesitas un ciclo que sume los números del 1 al 100.

      PROGRAMA EN JAVA
      public class Suma1a100 {
      public static void main(String[] args) {

      int suma = 0;

      for (int i = 1; i <= 100; i++) {
      suma += i;
      }

      System.out.println("La suma de los numeros del 1 al 100 es: " + suma);
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ Se inicia suma = 0
      ✔ Se recorre del 1 al 100
      ✔ Se van acumulando los valores

      RESULTADO
      La suma de los numeros del 1 al 100 es: 5050
      EXTRA (FORMA MATEMÁTICA)

      También se puede resolver sin ciclo:

      S=
      2
      n(n+1)


      int n = 100;
      int suma = n * (n + 1) / 2;
      System.out.println(suma);

      Eliminar
  26. Me pueden ayudar.
    Hacer un programa que calcule la media de
    un conjunto de números positivos introducidos por teclado. A
    priori, el programa no sabe cuántos números positivos se
    introducirán. El usuario indicará que ha terminado de
    introducir los datos cuando introduzca un número negativo.
    porfa necesito ayuda

    ResponderEliminar
    Respuestas
    1. Este ejercicio es muy común: usar un ciclo indefinido (while) hasta que el usuario ingrese un número negativo.

      IDEA
      Leer números positivos
      Ir sumando
      Contar cuántos se ingresan
      Cuando el número sea negativo → detener
      Calcular media:
      media=suma/cantidad
      PROGRAMA EN JAVA
      import java.util.Scanner;

      public class MediaNumeros {
      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      double numero;
      double suma = 0;
      int contador = 0;

      System.out.println("Ingrese numeros positivos (negativo para terminar):");

      numero = sc.nextDouble();

      while (numero >= 0) {

      suma += numero;
      contador++;

      System.out.print("Ingrese otro numero: ");
      numero = sc.nextDouble();
      }

      if (contador > 0) {
      double media = suma / contador;
      System.out.println("\nSuma: " + suma);
      System.out.println("Cantidad: " + contador);
      System.out.println("Media: " + media);
      } else {
      System.out.println("No se ingresaron numeros positivos.");
      }

      sc.close();
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ El programa sigue mientras el número sea ≥ 0
      ✔ Si el usuario escribe negativo → termina
      ✔ Se calcula promedio al final

      EJEMPLO
      Entrada:
      5
      10
      3
      -1
      Salida:
      Suma: 18
      Cantidad: 3
      Media: 6.0
      IMPORTANTE
      El número negativo NO se incluye
      Si no se ingresan positivos → evita división por 0

      Eliminar
  27. Ejercicio #6: Crear un proyecto en Java con los siguientes datos:
    Enunciado:
    Desarrollar un proyecto en Java que permita ingresar 5 números, 2 enteros y 3 decimales. Se deberá realizar lo siguiente con MENU DE OPCIONES:
    Se deberán realizar el llamado de los siguientes métodos dentro de la clase principal:
    Un método que permita calcular el promedio de todos los valores (retorna).
    Un método que permita calcular la siguiente formula. (A2 + C2 * B5 ) + √(E*D) (No retorna)
    Un método que permita calcular la siguiente formula. √E * (B3 + A3) + (B5 + C3) (retorna)
    Un método que permita calcular la siguiente formula: seno (C) + coseno (A). (No retorna)
    Un método que permita calcular la siguiente formula: √(A+5) + √C + √B + √(D-E) (retorna).

    AYUDA

    ResponderEliminar
    Respuestas
    1. Este es un ejercicio típico de métodos + menú + Math en Java.
      DATOS DEL PROBLEMA

      Se ingresan 5 números:

      A, B → enteros
      C, D, E → decimales

      Luego un menú para ejecutar métodos.

      PROGRAMA COMPLETO EN JAVA
      import java.util.Scanner;

      public class ProyectoMetodos {

      static Scanner sc = new Scanner(System.in);

      // VARIABLES GLOBALES
      static double A, B, C, D, E;

      public static void main(String[] args) {

      ingresarDatos();

      int op;

      do {
      System.out.println("\n--- MENU ---");
      System.out.println("1. Promedio de todos los valores");
      System.out.println("2. Formula 1 (no retorna)");
      System.out.println("3. Formula 2 (retorna)");
      System.out.println("4. Seno y coseno (no retorna)");
      System.out.println("5. Formula 3 (retorna)");
      System.out.println("6. Salir");

      System.out.print("Seleccione opcion: ");
      op = sc.nextInt();

      switch (op) {

      case 1:
      System.out.println("Promedio: " + promedio());
      break;

      case 2:
      formula1();
      break;

      case 3:
      System.out.println("Resultado: " + formula2());
      break;

      case 4:
      formula3();
      break;

      case 5:
      System.out.println("Resultado: " + formula4());
      break;

      case 6:
      System.out.println("Saliendo...");
      break;

      default:
      System.out.println("Opcion invalida");
      }

      } while (op != 6);
      }

      // INGRESO DE DATOS
      public static void ingresarDatos() {
      System.out.print("Ingrese A (entero): ");
      A = sc.nextDouble();

      System.out.print("Ingrese B (entero): ");
      B = sc.nextDouble();

      System.out.print("Ingrese C (decimal): ");
      C = sc.nextDouble();

      System.out.print("Ingrese D (decimal): ");
      D = sc.nextDouble();

      System.out.print("Ingrese E (decimal): ");
      E = sc.nextDouble();
      }

      // 1. PROMEDIO (RETORNA)
      public static double promedio() {
      return (A + B + C + D + E) / 5;
      }

      // 2. FORMULA 1 (NO RETORNA)
      // (A2 + C2 * B5 ) + √(E*D)
      public static void formula1() {
      double resultado = (Math.pow(A, 2) + Math.pow(C, 2) * Math.pow(B, 5))
      + Math.sqrt(E * D);

      System.out.println("Resultado: " + resultado);
      }

      // 3. FORMULA 2 (RETORNA)
      // √E * (B3 + A3) + (B5 + C3)
      public static double formula2() {
      return (Math.sqrt(E) * (Math.pow(B, 3) + Math.pow(A, 3)))
      + (Math.pow(B, 5) + Math.pow(C, 3));
      }

      // 4. SENO Y COSENO (NO RETORNA)
      // seno(C) + coseno(A)
      public static void formula3() {
      double resultado = Math.sin(C) + Math.cos(A);

      System.out.println("Resultado: " + resultado);
      }

      // 5. FORMULA 3 (RETORNA)
      // √(A+5) + √C + √B + √(D-E)
      public static double formula4() {
      return Math.sqrt(A + 5)
      + Math.sqrt(C)
      + Math.sqrt(B)
      + Math.sqrt(D - E);
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ Math.pow(x, n) → potencia
      ✔ Math.sqrt(x) → raíz cuadrada
      ✔ Math.sin() / Math.cos() → trigonometría (en radianes)

      IMPORTANTE
      Java usa radianes, no grados
      Si te piden grados:
      Math.sin(Math.toRadians(C))
      RESUMEN DEL PROYECTO

      ✔ 5 números
      ✔ menú
      ✔ métodos con y sin retorno
      ✔ uso de Math
      ✔ estructura completa tipo examen

      Eliminar
  28. un banco paga a sus ahorradores un interes del 1.55 mensual sobre el monto ahorrado. teniendo como dato de entrada el saldo inicial del ahorrista determnie el saldo final despues de determinada cantidad de dias. necesito hacerlo en Java...

    ResponderEliminar
    Respuestas
    1. Este problema es de interés simple proporcional al tiempo.

      El banco paga 1.55% mensual, pero tú tienes que calcularlo según días.

      IDEA
      Interés mensual: 1.55% = 0.0155
      Un mes se considera 30 días
      Entonces:
      inter
      e
      ˊ
      s=saldo×0.0155×
      30
      d
      ı
      ˊ
      as


      saldo final=saldo+inter
      e
      ˊ
      s
      PROGRAMA EN JAVA
      import java.util.Scanner;

      public class BancoInteres {
      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      System.out.print("Ingrese saldo inicial: ");
      double saldo = sc.nextDouble();

      System.out.print("Ingrese cantidad de dias: ");
      int dias = sc.nextInt();

      double tasaMensual = 0.0155;

      double interes = saldo * tasaMensual * (dias / 30.0);

      double saldoFinal = saldo + interes;

      System.out.println("\n--- RESULTADOS ---");
      System.out.println("Interes ganado: " + interes);
      System.out.println("Saldo final: " + saldoFinal);

      sc.close();
      }
      }
      EJEMPLO
      Entrada:
      Saldo: 1000
      Dias: 30
      Salida:
      Interes ganado: 15.5
      Saldo final: 1015.5
      EXPLICACIÓN SIMPLE

      ✔ 30 días = 1 mes
      ✔ se ajusta proporcionalmente con:

      dias / 30.0

      ✔ luego se suma al saldo inicial.

      Eliminar
  29. ayuda 1. Solicite al usuario que digite 4 números, ordénelos de menor a mayor e indique cuál es el mayor de los 4 números, cual es el menor de los 4 números, indique el promedio de los 4 números, además debe indicar cuantos números pares existen y en qué posición se encuentran. Imprimir los 4 números para comprobar el resultado. Use vectores.

    ResponderEliminar
    Respuestas
    1. Este ejercicio se resuelve con un vector (arreglo) de 4 posiciones y varias operaciones:

      Ordenar de menor a mayor
      Encontrar mayor y menor
      Calcular promedio
      Contar pares y mostrar sus posiciones
      PROGRAMA EN JAVA (CON VECTORES)
      import java.util.Scanner;
      import java.util.Arrays;

      public class NumerosVector {
      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      int[] numeros = new int[4];

      // INGRESO DE DATOS
      for (int i = 0; i < 4; i++) {
      System.out.print("Ingrese numero " + (i + 1) + ": ");
      numeros[i] = sc.nextInt();
      }

      // COPIA PARA NO PERDER EL ORIGINAL
      int[] original = numeros.clone();

      // ORDENAR
      Arrays.sort(numeros);

      // MENOR Y MAYOR
      int menor = numeros[0];
      int mayor = numeros[3];

      // PROMEDIO
      int suma = 0;
      for (int n : original) {
      suma += n;
      }
      double promedio = suma / 4.0;

      // PARES Y POSICIONES
      int contadorPares = 0;

      System.out.println("\nPosiciones de numeros pares:");

      for (int i = 0; i < 4; i++) {
      if (original[i] % 2 == 0) {
      System.out.println("Posicion " + i + " -> " + original[i]);
      contadorPares++;
      }
      }

      // RESULTADOS
      System.out.println("\n=== RESULTADOS ===");

      System.out.println("Numeros ordenados:");
      for (int n : numeros) {
      System.out.print(n + " ");
      }

      System.out.println("\nMenor: " + menor);
      System.out.println("Mayor: " + mayor);
      System.out.println("Promedio: " + promedio);
      System.out.println("Cantidad de pares: " + contadorPares);

      sc.close();
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ numeros[] → guarda los datos
      ✔ clone() → conserva el orden original para posiciones
      ✔ Arrays.sort() → ordena de menor a mayor
      ✔ ciclo → detecta pares y posiciones

      EJEMPLO
      Entrada:
      4 9 2 7
      Salida:
      Numeros ordenados:
      2 4 7 9

      Menor: 2
      Mayor: 9
      Promedio: 5.5

      Posiciones de numeros pares:
      Posicion 0 -> 4
      Posicion 2 -> 2

      Eliminar
  30. Para cierta aplicación informática se necesitan codificar (cifrar) números enteros.
    Elabore un ALGORITMO que solicite al usuario un número entero positivo de tres dígitos, el cual
    necesita ser codificado. Considere que:
    a) Si el dígito de dicho número es 2, 5 o 7, se le debe sumar la unidad.
    b) Si el dígito es 1, 4, 8 o 9, se le resta la unidad.
    c) Los dígitos restantes no se alteran.

    Ayuda por favor

    ResponderEliminar
    Respuestas
    1. Este ejercicio es de procesamiento de dígitos, o sea: separar un número de 3 cifras y modificar cada dígito según reglas.

      IDEA DEL PROBLEMA

      Si el número es, por ejemplo:

      N = 257

      Se separa en:

      2 | 5 | 7

      Y se aplica:

      2 → +1 → 3
      5 → +1 → 6
      7 → +1 → 8

      Resultado: 368

      REGLAS
      Si el dígito es 2, 5, 7 → +1
      Si el dígito es 1, 4, 8, 9 → -1
      Si no → igual
      ALGORITMO EN JAVA
      import java.util.Scanner;

      public class CodificarNumero {
      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      System.out.print("Ingrese un numero de 3 digitos: ");
      int num = sc.nextInt();

      int centena = num / 100;
      int decena = (num / 10) % 10;
      int unidad = num % 10;

      centena = modificar(centena);
      decena = modificar(decena);
      unidad = modificar(unidad);

      int resultado = centena * 100 + decena * 10 + unidad;

      System.out.println("Numero codificado: " + resultado);

      sc.close();
      }

      public static int modificar(int d) {

      if (d == 2 || d == 5 || d == 7) {
      return d + 1;
      }
      else if (d == 1 || d == 4 || d == 8 || d == 9) {
      return d - 1;
      }
      else {
      return d;
      }
      }
      }
      EXPLICACIÓN SIMPLE

      ✔ Separar número:

      centenas = num / 100
      decenas = (num / 10) % 10
      unidades = num % 10

      ✔ Función modificar():

      aplica reglas del enunciado

      ✔ Luego reconstruye el número.

      EJEMPLO
      Entrada:
      257
      Proceso:
      2 → 3
      5 → 6
      7 → 8
      Salida:
      Numero codificado: 368

      Eliminar
  31. Escribir un programa para contar votaciones de un proceso electoral. Deberá obtener la lista de
    candidatos y guardarlos en arreglos.
    - Presentar un menú de opciones para seleccionar a un candidato.
    - Mostrar el candidato ganador
    - Mostrar un listado con el número de votos y porcentajes obtenidos.
    No utilizar listas (ArrayList, Hashtable, Vector, ...)

    AYUDAAAAAA

    ResponderEliminar
    Respuestas
    1. Este problema se resuelve con arreglos simples (arrays), sin estructuras como ArrayList.

      La idea es:

      Guardar nombres de candidatos en un arreglo.
      Guardar votos en otro arreglo paralelo.
      Un menú para votar.
      Al final: ganador + porcentajes.
      PROGRAMA EN JAVA (SIN LISTAS)
      import java.util.Scanner;

      public class Elecciones {

      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      System.out.print("Cantidad de candidatos: ");
      int n = sc.nextInt();
      sc.nextLine();

      String[] candidatos = new String[n];
      int[] votos = new int[n];

      // INGRESO DE CANDIDATOS
      for (int i = 0; i < n; i++) {
      System.out.print("Nombre del candidato " + (i + 1) + ": ");
      candidatos[i] = sc.nextLine();
      votos[i] = 0;
      }

      int opcion;

      // MENU DE VOTACION
      do {
      System.out.println("\n--- MENU DE VOTACION ---");

      for (int i = 0; i < n; i++) {
      System.out.println((i + 1) + ". " + candidatos[i]);
      }
      System.out.println((n + 1) + ". Terminar votacion");

      System.out.print("Seleccione una opcion: ");
      opcion = sc.nextInt();

      if (opcion >= 1 && opcion <= n) {
      votos[opcion - 1]++;
      System.out.println("Voto registrado para " + candidatos[opcion - 1]);
      }

      } while (opcion != n + 1);

      // TOTAL VOTOS
      int total = 0;
      for (int i = 0; i < n; i++) {
      total += votos[i];
      }

      // GANADOR
      int max = votos[0];
      int ganador = 0;

      for (int i = 1; i < n; i++) {
      if (votos[i] > max) {
      max = votos[i];
      ganador = i;
      }
      }

      System.out.println("\n=== RESULTADOS ===");

      System.out.println("Ganador: " + candidatos[ganador]);

      System.out.println("\nDetalle de votos:");

      for (int i = 0; i < n; i++) {
      double porcentaje = (total == 0) ? 0 : (votos[i] * 100.0 / total);

      System.out.println(candidatos[i] +
      " -> Votos: " + votos[i] +
      " | Porcentaje: " + porcentaje + "%");
      }

      sc.close();
      }
      }
      EXPLICACIÓN SIMPLE:

      ✔ candidatos[] → nombres
      ✔ votos[] → cantidad de votos
      ✔ menú → simula votación
      ✔ do-while → permite votar varias veces
      ✔ cálculo final:

      ganador (mayor número)
      porcentaje = votos / total × 100
      EJEMPLO:
      1. Ana
      2. Luis
      3. Carlos
      4. Terminar votación

      Resultado:

      Ganador: Luis

      Ana -> 3 votos -> 30%
      Luis -> 5 votos -> 50%
      Carlos -> 2 votos -> 20%

      Eliminar
  32. Un empleado de la tienda realiza N ventas durante el día, se requiere saber
    cuántas de ellas fueron mayores a $1000, cuántas fueron mayores a $500 pero
    menores o iguales a $1000, y cuántas fueron menores o iguales a $500. Además,
    se requiere saber el monto de lo vendido en cada categoría y de forma global.
    Realice un programa que permita determinar lo anterior.

    ResponderEliminar
    Respuestas
    1. Este ejercicio se resuelve clasificando cada venta en 3 categorías y acumulando:

      > 1000
      > 500 y ≤ 1000
      ≤ 500
      Además: sumas por categoría y total general.
      ✔️ Programa en Java
      import java.util.Scanner;

      public class VentasDia {
      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      System.out.print("Ingrese el numero de ventas: ");
      int n = sc.nextInt();

      int contMayor1000 = 0;
      int contMedio = 0;
      int contMenorIgual500 = 0;

      double sumaMayor1000 = 0;
      double sumaMedio = 0;
      double sumaMenorIgual500 = 0;

      double total = 0;

      for (int i = 1; i <= n; i++) {

      System.out.print("Venta " + i + ": ");
      double venta = sc.nextDouble();

      total += venta;

      if (venta > 1000) {
      contMayor1000++;
      sumaMayor1000 += venta;

      } else if (venta > 500) {
      contMedio++;
      sumaMedio += venta;

      } else {
      contMenorIgual500++;
      sumaMenorIgual500 += venta;
      }
      }

      System.out.println("\nRESULTADOS:");
      System.out.println("Ventas > 1000: " + contMayor1000);
      System.out.println("Monto > 1000: " + sumaMayor1000);

      System.out.println("Ventas > 500 y <= 1000: " + contMedio);
      System.out.println("Monto medio: " + sumaMedio);

      System.out.println("Ventas <= 500: " + contMenorIgual500);
      System.out.println("Monto menor o igual 500: " + sumaMenorIgual500);

      System.out.println("TOTAL GENERAL: " + total);

      sc.close();
      }
      }
      🧠 Lógica rápida

      Cada venta entra en una sola categoría:

      > 1000
      > 500 && <= 1000
      <= 500

      Y se van acumulando:

      Contadores
      Sumas
      Total general

      Si quieres, puedo ayudarte a hacer una versión con menú, o con validación de datos negativos, o incluso en diagrama de flujo.

      Eliminar
  33. ayuda, Diseñar un programa que sume la serie de números 2+6+12+20+30+42+56+…10 100

    ResponderEliminar
    Respuestas
    1. Hay dos modos de hacerlo.

      Primer modo:

      Primero hay que identificar el patrón de la serie:

      2, 6, 12, 20, 30, 42, 56, ...

      Cada término se obtiene como:

      1×2 = 2
      2×3 = 6
      3×4 = 12
      4×5 = 20
      5×6 = 30
      6×7 = 42
      7×8 = 56
      ...

      Entonces el término general es:

      T
      n


      =n(n+1)

      Si el enunciado pide sumar la serie hasta 100 términos, podemos usar un ciclo.

      Java
      import java.util.Scanner;

      public class Serie {
      public static void main(String[] args) {

      long suma = 0;

      for (int n = 1; n <= 100; n++) {
      int termino = n * (n + 1);
      suma += termino;
      }

      System.out.println("La suma de la serie es: " + suma);
      }
      }
      Si quieres mostrar también la serie
      public class Serie {
      public static void main(String[] args) {

      long suma = 0;

      for (int n = 1; n <= 100; n++) {
      int termino = n * (n + 1);

      System.out.print(termino);

      if (n < 100) {
      System.out.print(" + ");
      }

      suma += termino;
      }

      System.out.println("\nSuma = " + suma);
      }
      }

      Resultado de la suma de los primeros 100 términos:

      338350

      Si el "10 100" de tu enunciado significa otra cosa (por ejemplo, sumar desde 10 hasta 100), compárteme el enunciado exacto y lo adapto.

      Eliminar
    2. Segundo modo:

      Primero hay que identificar el patrón de la serie:

      2, 6, 12, 20, 30, 42, 56, ...

      Cada término se obtiene como:

      1×2 = 2
      2×3 = 6
      3×4 = 12
      4×5 = 20
      5×6 = 30
      6×7 = 42
      7×8 = 56
      ...

      Por lo tanto, el término general es:

      T
      n


      =n(n+1)

      Si el enunciado pide sumar la serie hasta 100 términos, puedes hacer:

      Java
      public class Serie {
      public static void main(String[] args) {

      long suma = 0;

      for (int n = 1; n <= 100; n++) {
      int termino = n * (n + 1);
      suma += termino;
      }

      System.out.println("La suma de la serie es: " + suma);
      }
      }
      Si quieres mostrar la serie y la suma
      public class Serie {
      public static void main(String[] args) {

      long suma = 0;

      for (int n = 1; n <= 100; n++) {
      int termino = n * (n + 1);

      System.out.print(termino);

      if (n < 100) {
      System.out.print(" + ");
      }

      suma += termino;
      }

      System.out.println("\nSuma = " + suma);
      }
      }

      Resultado de la suma de los primeros 100 términos:

      Suma = 343400

      Si en realidad el enunciado significa "sumar hasta que el término llegue a 100" (en lugar de 100 términos), avísame porque la solución cambia ligeramente.

      Eliminar
  34. Programa que solicite al usuario un número entero y muestre por pantalla un triángulo rectángulo como el de más abajo.

    1
    3 1
    5 3 1
    7 5 3 1
    9 7 5 3 1

    ResponderEliminar
    Respuestas
    1. Este es la solución de tu amigo que soy yo, porque quiero ayudarte.

      Java:

      package General;
      import java.util.Scanner;
      public class TrianguloRectangulo{
      public static void main(String [] args){
      Scanner scanner=new Scanner(System.in);
      System.out.print("Ingrese un número entero: ");
      int N = scanner.nextInt();
      for(int i=1;i<=N;i+=2){
      for(int j=i;j>=1;j-=2){
      System.out.print(j+" ");
      }
      System.out.print("\n");
      }
      }
      }

      Eliminar
    2. Este ejercicio se resuelve con dos ciclos for:

      El ciclo externo controla las filas.
      El ciclo interno imprime los números impares en orden descendente.

      Si el usuario ingresa 5, la salida será:

      1
      3 1
      5 3 1
      7 5 3 1
      9 7 5 3 1
      Código en Java
      import java.util.Scanner;

      public class TrianguloImpares {
      public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);

      System.out.print("Ingrese un número: ");
      int n = sc.nextInt();

      for (int i = 1; i <= n; i++) {

      int impar = 2 * i - 1;

      for (int j = impar; j >= 1; j -= 2) {
      System.out.print(j + " ");
      }

      System.out.println();
      }

      sc.close();
      }
      }
      Ejemplo

      Entrada

      5

      Salida

      1
      3 1
      5 3 1
      7 5 3 1
      9 7 5 3 1

      La fórmula 2 * i - 1 genera los números impares: 1, 3, 5, 7, 9, ..., y luego el segundo ciclo los imprime hacia atrás hasta llegar a 1.

      Eliminar
  35. ayuda
    realizar un programa que lea N datos
    y de los cuales calcule mediante un menu
    1.- Numero MAYOR y MENOR
    2.- ULTIMO y ANTEPENULTIMO dato ingresado
    3.- cantidad de primos
    4.- promedio de impares
    5.- cantidad de multiplos de 5
    6.- cantidad de pares
    7.- ordenar datos de menor a mayor

    ResponderEliminar
    Respuestas
    1. Para este ejercicio, lo mejor es:

      Leer N números y guardarlos en un arreglo.
      Mostrar un menú con las opciones.
      Procesar la opción elegida.

      Aquí tienes una solución completa en Java:

      import java.util.Scanner;
      import java.util.Arrays;

      public class MenuNumeros {

      public static boolean esPrimo(int n) {
      if (n < 2) return false;

      for (int i = 2; i <= Math.sqrt(n); i++) {
      if (n % i == 0)
      return false;
      }
      return true;
      }

      public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      System.out.print("Cantidad de datos: ");
      int n = sc.nextInt();

      int[] datos = new int[n];

      for (int i = 0; i < n; i++) {
      System.out.print("Dato " + (i + 1) + ": ");
      datos[i] = sc.nextInt();
      }

      System.out.println("\nMENU");
      System.out.println("1. Numero mayor y menor");
      System.out.println("2. Ultimo y antepenultimo dato");
      System.out.println("3. Cantidad de primos");
      System.out.println("4. Promedio de impares");
      System.out.println("5. Cantidad de multiplos de 5");
      System.out.println("6. Cantidad de pares");
      System.out.println("7. Ordenar de menor a mayor");

      System.out.print("Seleccione una opcion: ");
      int op = sc.nextInt();

      switch (op) {

      case 1:
      int mayor = datos[0];
      int menor = datos[0];

      for (int num : datos) {
      if (num > mayor) mayor = num;
      if (num < menor) menor = num;
      }

      System.out.println("Mayor: " + mayor);
      System.out.println("Menor: " + menor);
      break;

      case 2:
      if (n >= 3) {
      System.out.println("Ultimo: " + datos[n - 1]);
      System.out.println("Antepenultimo: " + datos[n - 3]);
      } else {
      System.out.println("Se necesitan al menos 3 datos.");
      }
      break;

      case 3:
      int primos = 0;

      for (int num : datos) {
      if (esPrimo(num))
      primos++;
      }

      System.out.println("Cantidad de primos: " + primos);
      break;

      case 4:
      int suma = 0;
      int cantImpares = 0;

      for (int num : datos) {
      if (num % 2 != 0) {
      suma += num;
      cantImpares++;
      }
      }

      if (cantImpares > 0)
      System.out.println("Promedio de impares: " + (double) suma / cantImpares);
      else
      System.out.println("No hay impares.");
      break;

      case 5:
      int multiplos5 = 0;

      for (int num : datos) {
      if (num % 5 == 0)
      multiplos5++;
      }

      System.out.println("Cantidad de múltiplos de 5: " + multiplos5);
      break;

      case 6:
      int pares = 0;

      for (int num : datos) {
      if (num % 2 == 0)
      pares++;
      }

      System.out.println("Cantidad de pares: " + pares);
      break;

      case 7:
      Arrays.sort(datos);

      System.out.println("Datos ordenados:");
      for (int num : datos) {
      System.out.print(num + " ");
      }
      break;

      default:
      System.out.println("Opcion no valida.");
      }

      sc.close();
      }
      }

      Observación: El enunciado dice "antepenúltimo", que es el dato ubicado tres posiciones antes del final (n - 3). Si tu profesor realmente quería el penúltimo, entonces sería datos[n - 2]. Conviene confirmar ese detalle.

      Eliminar
  36. Crear una matriz 4x4.Llenarla matriz de manera que, si los índices de los elementos son iguales, se almacena un
    8 y de lo contrario, se almacena un 0. Mostrar en pantalla la Matriz Identidad de 4X4

    ResponderEliminar
    Respuestas
    1. Este ejercicio consiste en crear una matriz de 4 filas y 4 columnas donde:

      Si i == j (misma fila y columna), guardar 8.
      En caso contrario, guardar 0.

      La matriz resultante será:

      8 0 0 0
      0 8 0 0
      0 0 8 0
      0 0 0 8
      Código en Java
      public class MatrizIdentidad {
      public static void main(String[] args) {

      int[][] matriz = new int[4][4];

      // Llenar la matriz
      for (int i = 0; i < 4; i++) {
      for (int j = 0; j < 4; j++) {

      if (i == j) {
      matriz[i][j] = 8;
      } else {
      matriz[i][j] = 0;
      }
      }
      }

      // Mostrar la matriz
      System.out.println("Matriz 4x4:");

      for (int i = 0; i < 4; i++) {
      for (int j = 0; j < 4; j++) {
      System.out.print(matriz[i][j] + " ");
      }
      System.out.println();
      }
      }
      }
      Salida
      Matriz 4x4:
      8 0 0 0
      0 8 0 0
      0 0 8 0
      0 0 0 8

      Nota: Técnicamente esto no es una matriz identidad clásica (que tiene 1 en la diagonal principal), sino una matriz diagonal con 8 en la diagonal principal. Sin embargo, el código cumple exactamente con lo que pide el enunciado.

      Eliminar
  37. alguien que me pueda ayudar con este ejercicio

    En un triángulo rectángulo, el cuadrado de la longitud de un lado es igual a la suma de los cuadrados de las longitudes de los otros dos lados. Escriba un programa que invite al usuario a ingresar las longitudes de tres lados de un triángulo y luego que de salida a un mensaje indicando si el triángulo es un rectángulo.

    ResponderEliminar
    Respuestas
    1. Sí. Este ejercicio se basa en el Teorema de Pitágoras:

      Un triángulo es rectángulo si el cuadrado del lado más largo (hipotenusa) es igual a la suma de los cuadrados de los otros dos lados.

      Por ejemplo:

      Lados: 3, 4 y 5
      3
      2
      +4
      2
      =9+16=25
      5
      2
      =25

      Como son iguales, el triángulo es rectángulo.

      Programa en Java
      import java.util.Scanner;

      public class TrianguloRectangulo {
      public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);

      System.out.print("Ingrese el primer lado: ");
      double a = sc.nextDouble();

      System.out.print("Ingrese el segundo lado: ");
      double b = sc.nextDouble();

      System.out.print("Ingrese el tercer lado: ");
      double c = sc.nextDouble();

      // Encontrar el lado mayor
      double mayor = Math.max(a, Math.max(b, c));

      if (mayor == a) {
      if (a * a == b * b + c * c) {
      System.out.println("El triángulo es rectángulo.");
      } else {
      System.out.println("El triángulo NO es rectángulo.");
      }
      } else if (mayor == b) {
      if (b * b == a * a + c * c) {
      System.out.println("El triángulo es rectángulo.");
      } else {
      System.out.println("El triángulo NO es rectángulo.");
      }
      } else {
      if (c * c == a * a + b * b) {
      System.out.println("El triángulo es rectángulo.");
      } else {
      System.out.println("El triángulo NO es rectángulo.");
      }
      }

      sc.close();
      }
      }
      Ejemplo de ejecución

      Entrada

      Ingrese el primer lado: 3
      Ingrese el segundo lado: 4
      Ingrese el tercer lado: 5

      Salida

      El triángulo es rectángulo.

      Si tu profesor está viendo apenas estructuras if, esta solución es adecuada porque utiliza únicamente condiciones y operaciones básicas.

      Eliminar
  38. ayudaaa
    Realizar un programa que muestre los intereses de Q.5000.00 si sabemos que a los 3 meses es el 2%, a los 6 meses el 5% y a los 12 meses el 11%. Muestre los intereses ganados segun los meses que ingrese el usuario.

    ResponderEliminar
    Respuestas
    1. Puedes resolverlo con una estructura if para calcular el interés según la cantidad de meses que ingrese el usuario.

      Programa en Java
      import java.util.Scanner;

      public class Intereses {
      public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);

      double capital = 5000.00;
      double interes = 0;
      int meses;

      System.out.print("Ingrese la cantidad de meses (3, 6 o 12): ");
      meses = sc.nextInt();

      if (meses == 3) {
      interes = capital * 0.02;
      } else if (meses == 6) {
      interes = capital * 0.05;
      } else if (meses == 12) {
      interes = capital * 0.11;
      } else {
      System.out.println("Cantidad de meses no válida.");
      return;
      }

      System.out.println("Capital: Q." + capital);
      System.out.println("Interés ganado: Q." + interes);
      System.out.println("Monto total: Q." + (capital + interes));

      sc.close();
      }
      }
      Ejemplos

      Entrada:

      3

      Salida:

      Capital: Q.5000.0
      Interés ganado: Q.100.0
      Monto total: Q.5100.0

      Entrada:

      6

      Salida:

      Capital: Q.5000.0
      Interés ganado: Q.250.0
      Monto total: Q.5250.0

      Entrada:

      12

      Salida:

      Capital: Q.5000.0
      Interés ganado: Q.550.0
      Monto total: Q.5550.0

      Eliminar
  39. AYUDAAA
    Se lee desde teclado información de personas. De cada persona se lee: DNI, apellido y
    nombre, ciudad natal y fecha de nacimiento. La lectura finaliza cuando llega una persona con
    DNI 0 (cero) o cuando se han leído 500 personas. Informar:
    A. Apellido y nombre de aquellas personas nacidas en “Arrecifes” y cuyos DNI poseen
    menos dígitos impares que pares.
    B. La cantidad total de personas leídas.

    ResponderEliminar
    Respuestas
    1. Este ejercicio se puede resolver leyendo personas hasta que:

      El DNI sea 0, o
      Se hayan leído 500 personas.

      Luego, para cada persona:

      Verificar si nació en "Arrecifes".
      Contar cuántos dígitos del DNI son pares e impares.
      Si tiene menos impares que pares, mostrar su apellido y nombre.
      Llevar un contador de personas leídas.
      Algoritmo
      import java.util.Scanner;

      public class Personas {

      public static boolean menosImparesQuePares(long dni) {
      int pares = 0;
      int impares = 0;

      while (dni != 0) {
      int digito = (int)(dni % 10);

      if (digito % 2 == 0)
      pares++;
      else
      impares++;

      dni /= 10;
      }

      return impares < pares;
      }

      public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);

      int totalPersonas = 0;

      System.out.print("Ingrese DNI: ");
      long dni = sc.nextLong();
      sc.nextLine();

      while (dni != 0 && totalPersonas < 500) {

      System.out.print("Apellido y nombre: ");
      String apeNom = sc.nextLine();

      System.out.print("Ciudad natal: ");
      String ciudad = sc.nextLine();

      System.out.print("Fecha de nacimiento: ");
      String fecha = sc.nextLine();

      totalPersonas++;

      if (ciudad.equalsIgnoreCase("Arrecifes")
      && menosImparesQuePares(dni)) {
      System.out.println("Persona que cumple condición: " + apeNom);
      }

      System.out.print("\nIngrese DNI: ");
      dni = sc.nextLong();
      sc.nextLine();
      }

      System.out.println("\nCantidad total de personas leídas: "
      + totalPersonas);

      sc.close();
      }
      }
      Ejemplo

      Si se ingresa:

      DNI: 2468
      Apellido y nombre: Juan Perez
      Ciudad natal: Arrecifes
      Fecha: 10/05/2000

      DNI: 0

      El DNI 2468 tiene:

      Pares: 4
      Impares: 0

      Como nació en Arrecifes y tiene menos impares que pares, se informa:

      Persona que cumple condición: Juan Perez

      Cantidad total de personas leídas: 1

      Observación: La fecha de nacimiento se lee porque el enunciado lo pide, pero no se utiliza en los cálculos.

      Eliminar
  40. Porfavor me ayudarían.

    Una institución educativa le paga a sus profesores $200 la hora y le hace un descuento del 5% por concepto de caja de ahorro.Determine el monto del descuento y el monto total a pagar al profesor.

    ResponderEliminar
    Respuestas
    1. Este problema se resuelve calculando primero el salario bruto, luego el descuento del 5% y finalmente el salario neto.

      Fórmulas
      Salario bruto = horas trabajadas × 200
      Descuento = salario bruto × 0.05
      Total a pagar = salario bruto − descuento
      Programa en Java
      import java.util.Scanner;

      public class PagoProfesor {
      public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);

      System.out.print("Ingrese las horas trabajadas: ");
      double horas = sc.nextDouble();

      double salarioBruto = horas * 200;
      double descuento = salarioBruto * 0.05;
      double totalPagar = salarioBruto - descuento;

      System.out.println("Salario bruto: $" + salarioBruto);
      System.out.println("Descuento (5%): $" + descuento);
      System.out.println("Total a pagar: $" + totalPagar);

      sc.close();
      }
      }
      Ejemplo

      Entrada:

      40

      Cálculos:

      Salario bruto = 40 × 200 = $8000
      Descuento = 8000 × 0.05 = $400
      Total a pagar = 8000 − 400 = $7600

      Salida:

      Salario bruto: $8000.0
      Descuento (5%): $400.0
      Total a pagar: $7600.0

      Eliminar
  41. ayuda por favor, tengo que realizar esto en netbeans
    Realizar un método en java que calcule la suma de la siguiente serie aritmética para n términos, los guarde en una lista ligada e imprima la lista ligada: 2, 4, 8, 16, 32, 64…n.
    Nota: para el método debes hallar contador de frecuencia y orden de magnitud.

    ResponderEliminar
    Respuestas
    1. Solución:

      import java.util.LinkedList;
      import java.util.Scanner;
      public class SerieLinkedList{
      public static void main(String [] args){
      Scanner scanner=new Scanner(System.in);
      System.out.print("Ingrese el número de términos (n): ");
      int n=scanner.nextInt();
      scanner.close();
      LinkedList lista=new LinkedList<>();
      int suma=0;
      int termino=2; //Primer término de la serie
      //Contador de frecuencia y orden de magnitud
      int contadorFrecuencia=0;
      for(int i=0;i<n;i++){
      lista.add(termino); //Guardar el término en la lista
      suma+=termino; //Sumar el término
      termino*=2; //Generar el siguiente término (multiplicación por 2)
      contadorFrecuencia++; //Contador de iteraciones
      }
      System.out.println("Lista ligada de la serie: "+lista);
      System.out.println("Suma de la serie: "+suma);
      System.out.println("Contador de frecuencia: "+contadorFrecuencia);
      System.out.println("Orden de magnitud (O(n)): "+n);
      }
      }

      Eliminar
  42. Hola, me ayudan por favor?
    lea dos números (a) y (b) enteros positivos. Calcular e imprimir la suma de los múltiplos de (a) comprendidos entre ellos.
    Gracias!!

    ResponderEliminar
    Respuestas
    1. Solución:

      import java.util.Scanner;
      public class SumaMultiplos{
      public static void main(String [] args){
      Scanner scanner=new Scanner(System.in);
      System.out.print("Ingrese el número a (entero positivo): ");
      int a=scanner.nextInt();
      System.out.print("Ingrese el número b (entero positivo): ");
      int b=scanner.nextInt();
      if(a<=0||b<=0||a>b){
      System.out.println("Los números deben ser positivos y a debe ser menor o igual que b");
      return;
      }
      int suma=0;
      for(int i=a; i<=b;i++){
      if(i%a==0){
      suma+=i;
      }
      }
      System.out.println("La suma de los múltiplos de "+a+" entre "+a+" y "+b+" es: "+suma);
      }
      }

      Eliminar
  43. Por favor ayudeme con una codificación y diagrama de flujo. Por favor:
    Utilizando diagramas de flujo, crea un minijuego en el que el ordenador elija un número aleatorio comprendido entre 0 y 100 para que el usuario intente adivinarlo.

    Cada vez que el usuario haga un intento le daremos pistas de si el número que busca es más alto o más bajo que el que ha escrito, hasta que acierte o escriba la palabra FIN para terminar el juego.

    Para representar la obtención del número aleatorio escribiremos la siguiente instrucción al comienzo del diagrama:

    n = aleatorio(0,100)
    A partir de ese momento supondremos que en n hay un valor elegido por el ordenador en el rango [0,100].

    Gracias por su ayuda. Enviar correo henryjrruiz@gmail.com

    ResponderEliminar
    Respuestas
    1. Este ejercicio me costó tiempo de hacerlo pero al final lo hice. Hecho por: Octavio Ayala.

      Código Java:

      import java.util.Scanner;
      import java.util.Random;
      public class AdivinarNumero{
      public static void main(String [] args){
      Scanner scanner=new Scanner(System.in);
      Random random=new Random();
      int numeroAleatorio=random.nextInt(101);// Genera un número entre 0 y 100
      String entrada;
      int intento;
      System.out.println("¡Bienvenido al juego de adivinar el número!");
      System.out.println("Intenta adivinar el número entre 0 y 100. Escribe 'FIN' para salir.");
      while (true){
      System.out.print("Ingrese un número: ");
      entrada=scanner.nextLine();
      if(entrada.equalsIgnoreCase("FIN")){
      System.out.println("¡Gracias por jugar! El número era: "+numeroAleatorio);
      break;
      }
      try{
      intento=Integer.parseInt(entrada);
      if(intento<0||intento>100){
      System.out.println("Por favor, ingrese un número válido entre 0 y 100.");
      continue;
      }
      if(intento==numeroAleatorio){
      System.out.println("¡Felicidades! Has adivinado el número");
      break;
      }else if(intento<numeroAleatorio){
      System.out.println("El número es más alto");
      }else{
      System.out.println("El número es más bajo");
      }
      }catch (NumberFormatException e){
      System.out.println("Entrada no válida. Escriba un número o 'FIN' para salir");
      }
      }
      }
      }

      Diagrama de flujo:

      Inicio

      ├─ Generar número aleatorio (0-100)

      ├─ Mostrar mensaje de bienvenida

      ├─ (Bucle) Solicitar número al usuario

      ├─ Si usuario escribe "FIN" → Fin del programa

      ├─ Comparar número:
      │ ├── Si es igual → "¡Has adivinado!"
      │ ├── Si es menor → "El número es más alto."
      │ ├── Si es mayor → "El número es más bajo."

      ├─ Volver a pedir número

      Fin

      Eliminar
  44. Buenas tardes.
    Necesito que me ayudes .porfavor
    .2. Año bisiesto A través del uso de las condiciones que ofrece “if”, se muestra como es el procedimiento para saber si un año es bisiesto o no.

    ResponderEliminar
    Respuestas
    1. Calcular si un año es bisiesto está resuelto en esta entrada https://puntocomnoesunlenguaje.blogspot.com/2022/04/calcular-bisiesto-java.html

      Eliminar
    2. Hola, aquí va.

      Para determinar si un año es bisiesto en Java usando if, se aplican estas reglas:

      Un año es bisiesto si es divisible entre 4.
      Pero si es divisible entre 100, no es bisiesto.
      Sin embargo, si también es divisible entre 400, sí es bisiesto.
      Programa en Java
      import java.util.Scanner;

      public class AnioBisiesto {
      public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);

      System.out.print("Ingrese un año: ");
      int anio = sc.nextInt();

      if ((anio % 4 == 0 && anio % 100 != 0) || (anio % 400 == 0)) {
      System.out.println("El año " + anio + " es bisiesto.");
      } else {
      System.out.println("El año " + anio + " no es bisiesto.");
      }

      sc.close();
      }
      }
      Ejemplos

      Entrada:

      2024

      Salida:

      El año 2024 es bisiesto.

      Entrada:

      1900

      Salida:

      El año 1900 no es bisiesto.

      Entrada:

      2000

      Salida:

      El año 2000 es bisiesto.

      Eliminar
  45. Se tiene los nombres de 3 estudiantes y cada estudiante tiene 2 notas. Calcule el promedio de cada estudiante. Imprima el nombre, las 2 notas y el promedio de cada estudiante.
    Nombre Notas Promedio
    Erasmo 70 100
    Cristel 100 100
    Jonathan 90 75

    Es un problema de arreglo de dos dimensiones, ayuda

    ResponderEliminar
    Respuestas
    1. Esta bien, yo te ayudo.

      import java.util.Scanner;
      public class PromedioEstudiantes{
      public static void main(String [] args){
      String[] nombres={"Erasmo","Cristel","Jonathan"};
      int[][]notas={
      {70, 100}, // Notas de Erasmo
      {100, 100}, // Notas de Cristel
      {90, 75} // Notas de Jonathan
      };
      System.out.println("Nombre\tNotas\t\tPromedio");
      for(int i=0;i<nombres.length;i++){
      int suma=0;
      System.out.print(nombres[i]+"\t");
      for(int j=0; j<notas[i].length;j++){
      System.out.print(notas[i][j]+" ");
      suma+=notas[i][j];
      }
      double promedio=(double) suma/notas[i].length;
      System.out.println("\t"+promedio);
      }
      }
      }

      Eliminar
  46. Alguien me podría ayudar con este ejercicio?

    Se quiere construir una aplicación para administrar un club social. El club contara con un máximo de 35 socios.
    Esta aplicación permite manejar los socios, sus consumos y las personas autorizadas por cada socio para que pueda entrar y usar los servicios del club
    De cada socio se conoce:
    - La cédula. No puede haber dos socios con la misma cédula.
    (verificar antes de hacer afiliación)
    - El nombre.
    - Los fondos disponibles.
    - El tipo de suscripción. Puede ser VIP o Regular. En el club puede haber máximo 3 socios VIP
    - Las facturas sin pagar. (PARA UN MAXIMO DE 20)
    - La lista de personas autorizadas. (PARA UN MAXIMO DE 10)
    Cuando un nuevo socio se afilia al club, debe contar con un fondo inicial para cubrir sus consumos y los de las personas afiliadas, El monto del fondo inicial se determina según el tipo de suscripción del socio: los socios regulares con $50.000 y los socios VIP con $100.000. Los socios pueden aumentar sus fondos, pero tienen una restricción máxima, que también depende del tipo de suscripción, de la siguiente manera: regulares $1´000.000 y VIP $5´000.000.
    Una factura se genera cada vez que un socio o uno de sus asociados hacen un consumo. Para hacer un consumo, el socio debe contar con fondos suficientes para pagarlo. Una factura sólo puede ser pagada si el socio ene fondos suficientes para hacerlo. Al pagar la factura, esta es eliminada de la lista de facturas sin pagar y se descuenta el valor de los fondos del socio.
    De cada factura se conoce:
    - El concepto
    - El valor
    - El nombre del socio o de la persona autorizada que generó el consumo.
    Cada socio puede agregar personas autorizadas a su lista, siempre y cuando cuente con fondos. Adicionalmente puede eliminar un autorizado de la lista, si este no ene una factura sin pagar a su nombre.
    La aplicación debe permitir:
    1. Afiliar un socio al club.
    2. Registrar una persona autorizada por un socio.
    3. Pagar una factura.
    4. Registrar un consumo en la cuenta de un socio
    5. Aumentar fondos de la cuenta de un socio
    6. En la clase Club definir un método denominado EliminarSocio, este recibe como parámetro la cédula del socio y retorna un valor booleano indicando que el socio fue eliminado.
    Tenga en cuenta que en este método se pueden presentar 4 tipos de errores que son:
    • Que no exista un socio con la cédula recibida como parámetro.
    • Que el socio sea de po VIP. No se pueden eliminar socios de po VIP.
    • Que el socio tenga facturas pendientes de pago. No se pueden eliminar socios con facturas pendientes de pago.
    • Que el socio tenga más de un autorizado. No se puede eliminar un socio con más de un autorizado.
    7. En la clase Club número el método debe retornar el valor correspondiente al total de consumos del socio de dicha cédula. Si no se encuentra una afiliación para este número de cédula, se maneja la condición de error que indica la situación.
    Nota: cuando no existan consumos para la afiliación de la cédula dada, el método debe retornar 0.

    ResponderEliminar
    Respuestas
    1. Vaya que tan grande de este proyecto, pero aquí vine a darte la solución, ya que fue trabajoso de hacerlo.

      Clase Socio

      import java.util.ArrayList;
      public class Socio{
      private String cedula;
      private String nombre;
      private double fondos;
      private String tipoSuscripcion;
      private ArrayList facturas;
      private ArrayList autorizados;
      public Socio(String cedula,String nombre,String tipoSuscripcion){
      this.cedula=cedula;
      this.nombre=nombre;
      this.tipoSuscripcion=tipoSuscripcion;
      this.fondos=tipoSuscripcion.equals("VIP") ? 100000 : 50000;
      this.facturas=new ArrayList<>();
      this.autorizados=new ArrayList<>();
      }
      public String getCedula(){
      return cedula;
      }
      public double getFondos(){
      return fondos;
      }
      public void aumentarFondos(double monto){
      double limite=tipoSuscripcion.equals("VIP") ? 5000000 : 1000000;
      if((fondos+monto)<=limite) {
      fondos += monto;
      }else{
      System.out.println("No se puede superar el límite de fondos");
      }
      }
      public void registrarConsumo(String concepto,double valor,String persona){
      if(fondos>=valor){
      facturas.add(new Factura(concepto, valor, persona));
      fondos-=valor;
      }else{
      System.out.println("Fondos insuficientes para el consumo");
      }
      }
      public boolean pagarFactura(int indice){
      if(indice>=0&& indice=factura.getValor()){
      fondos-=factura.getValor();
      facturas.remove(indice);
      return true;
      }
      }
      System.out.println("No se puede pagar la factura");
      return false;
      }
      public boolean agregarAutorizado(String nombre){
      if(autorizados.size()<10){
      autorizados.add(nombre);
      return true;
      }
      System.out.println("No se puede agregar más autorizados");
      return false;
      }
      public boolean eliminarAutorizado(String nombre){
      for(Factura factura:facturas){
      if(factura.getPersona().equals(nombre)){
      System.out.println("No se puede eliminar. Tiene facturas pendientes");
      return false;
      }
      }
      return autorizados.remove(nombre);
      }
      }

      Continua.

      Eliminar
    2. Continua con el anterior.

      Clase Factura

      public class Factura{
      private String concepto;
      private double valor;
      private String persona;
      public Factura(String concepto,double valor,String persona){
      this.concepto=concepto;
      this.valor=valor;
      this.persona=persona;
      }
      public double getValor(){
      return valor;
      }
      public String getPersona(){
      return persona;
      }
      }

      Clase Club

      import java.util.ArrayList;
      public class Club{
      private ArrayListsocios;
      private int vipCount=0;
      public Club(){
      socios=new ArrayList<>();
      }
      public boolean afiliarSocio(String cedula,String nombre,String tipo){
      if(buscarSocio(cedula)!=null){
      System.out.println("Ya existe un socio con esa cédula");
      return false;
      }
      if(tipo.equals("VIP")&&vipCount>=3){
      System.out.println("Se alcanzó el límite de socios VIP");
      return false;
      }
      Socio nuevoSocio=new Socio(cedula,nombre,tipo);
      socios.add(nuevoSocio);
      if(tipo.equals("VIP"))vipCount++;
      return true;
      }
      public boolean eliminarSocio(String cedula){
      Socio socio=buscarSocio(cedula);
      if(socio==null){
      System.out.println("No existe un socio con esa cédula");
      return false;
      }
      if(socio.getFondos()>0||socio.autorizados.size()>1){
      System.out.println("No se puede eliminar este socio por condiciones no cumplidas");
      return false;
      }
      if(socio.tipoSuscripcion.equals("VIP")){
      System.out.println("No se pueden eliminar socios VIP");
      return false;
      }
      socios.remove(socio);
      return true;
      }
      public double totalConsumoSocio(String cedula){
      Socio socio=buscarSocio(cedula);
      if(socio==null){
      System.out.println("No existe una afiliación con esa cédula");
      return 0;
      }
      return socio.getFondos();
      }
      private Socio buscarSocio(String cedula){
      for(Socio s:socios){
      if(s.getCedula().equals(cedula)){
      return s;
      }
      }
      return null;
      }
      }

      Ejemplo de uso

      public class Main{
      public static void main(String [] args){
      Club club=new Club();
      //Afiliar socios
      club.afiliarSocio("12345","Juan Perez","Regular");
      club.afiliarSocio("67890","Maria Lopez","VIP");
      //Registrar consumo
      Socio socio=club.buscarSocio("12345");
      if(socio!=null){
      socio.registrarConsumo("Almuerzo",5000,"Juan Perez");
      }
      //Pagar factura
      if(socio!=null){
      socio.pagarFactura(0);
      }
      //Total de consumo
      System.out.println("Total consumido: "+club.totalConsumoSocio("12345"));
      //Intentar eliminar socio
      club.eliminarSocio("12345");
      }
      }

      Eso sería todo.

      Eliminar
  47. alguien ayudeme desarrollando estos 6 ejercicios java porfavor
    1. Programa que determine si un número ingresado es un número primo.
    2. Escribir un programa que imprima por pantalla todas las fichas de dominó, de una por
    línea y sin repetir utilizando ciclos.
    3. Escribir un programa que cuente cuántas palabras son verbos (en infinitivo) en un texto
    ingresado por el usuario. Recuerde que los infinitivos terminan TODOS en una vocal + “r”.
    4. Escribir un programa que pida una palabra y cuente el número de vocales y consonantes
    que contiene.
    5. Escribir un programa que sirva para generar códigos de usuario por el procedimiento
    siguiente: Tiene que leer el nombre y los dos apellidos de una persona y devolver un
    código de usuario formado por las tres primeras letras del primer apellido, las tres
    primeras letras del segundo apellido y las tres primeras letras del nombre. Por ejemplo, si
    la cadena de entrada es: “JORGE GUIDO SANTAMARIA” debe devolver “GUISANJOR”.
    6. Programa que simule el juego de doble o nada que permita ir jugando y apostando hasta
    que el jugador decida abandonar el juego. El programa debe sacar por pantalla el número
    de jugadas y el total ganado por el jugador (si ha perdido debe ser una cantidad negativa)

    ResponderEliminar
    Respuestas
    1. Soluciones:

      Ejercicio 1:

      import java.util.Scanner;
      public class NumeroPrimo {
      public static void main(String [] args){
      Scanner scanner=new Scanner(System.in);
      System.out.print("Ingrese un número entero: ");
      int num=scanner.nextInt();
      boolean esPrimo=num>1;
      for(int i=2;i*i<=num;i++){
      if(num%i==0){
      esPrimo = false;
      break;
      }
      }
      System.out.println(num+(esPrimo?" es primo.":" no es primo."));
      }
      }

      Ejercicio 2:

      public class FichasDomino{
      public static void main(String [] args){
      for(int i=0;i<=6;i++){
      for(int j=i;j<=6;j++){
      System.out.println("[" + i + " | " + j + "]");
      }
      }
      }
      }

      Ejercicio 3:

      import java.util.Scanner;
      public class ContarVerbos{
      public static void main(String [] args){
      Scanner scanner=new Scanner(System.in);
      System.out.print("Ingrese un texto: ");
      String texto=scanner.nextLine().toLowerCase();
      scanner.close();
      String[]palabras=texto.split("\\s+");
      int contador=0;
      for(String palabra:palabras){
      if(palabra.matches(".*[aeiou]r")){ // Verifica si termina en vocal + 'r'
      contador++;
      }
      }
      System.out.println("Cantidad de verbos en infinitivo: "+contador);
      }
      }

      Ejercicio 4:

      import java.util.Scanner;
      public class ContarLetras{
      public static void main(String [] args){
      Scanner scanner=new Scanner(System.in);
      System.out.print("Ingrese una palabra: ");
      String palabra=scanner.nextLine().toLowerCase();
      scanner.close();
      int vocales=0,consonantes=0;
      for(char c:palabra.toCharArray()){
      if("aeiou".indexOf(c)!=-1){
      vocales++;
      }else if(Character.isLetter(c)){
      consonantes++;
      }
      }
      System.out.println("Vocales: "+vocales);
      System.out.println("Consonantes: "+consonantes);
      }
      }

      Ejercicio 5:

      import java.util.Scanner;
      public class CodigoUsuario{
      public static void main(String [] args){
      Scanner scanner=new Scanner(System.in);
      System.out.print("Ingrese nombre y dos apellidos: ");
      String[]partes=scanner.nextLine().toUpperCase().split("\\s+");
      scanner.close();
      if(partes.length<3){
      System.out.println("Debe ingresar un nombre y dos apellidos.");
      return;
      }
      String codigo=partes[1].substring(0, 3)+partes[2].substring(0, 3)+partes[0].substring(0, 3);
      System.out.println("Código de usuario: "+codigo);
      }
      }

      Ejercicio 6:

      import java.util.Scanner;
      public class DobleONada{
      public static void main(String [] args){
      Scanner scanner=new Scanner(System.in);
      int saldo=100;
      int jugadas=0;
      System.out.println("Bienvenido a 'Doble o Nada'!");
      while(true){
      System.out.println("Saldo actual: "+saldo);
      System.out.print("Ingrese su apuesta(0 para salir): ");
      int apuesta=scanner.nextInt();
      if(apuesta==0) break;
      if(apuesta>saldo){
      System.out.println("No puedes apostar más de tu saldo!");
      continue;
      }
      jugadas++;
      boolean gana=Math.random()<0.5; // 50% de probabilidad de ganar
      if(gana){
      saldo+=apuesta;
      System.out.println("¡Ganaste! Nuevo saldo: "+saldo);
      }else{
      saldo-=apuesta;
      System.out.println("Perdiste... Nuevo saldo: "+saldo);
      }
      if(saldo<=0){
      System.out.println("Te has quedado sin dinero. Fin del juego.");
      break;
      }
      }
      scanner.close();
      System.out.println("Jugadas realizadas: "+jugadas);
      System.out.println("Saldo final: "+saldo);
      }
      }

      Espero haberte ayudado de los ejercicios propuestos.

      Eliminar
  48. Ayuda ......
    Leer una expresión y contar la frecuencia de cada operador

    ResponderEliminar
    Respuestas
    1. Aquí está la solución:

      import java.util.HashMap;
      import java.util.Scanner;
      public class ContadorOperadores{
      public static void main(String[]args){
      Scanner scanner=new Scanner(System.in);
      System.out.print("Ingrese una expresión matemática: ");
      String expresion=scanner.nextLine();
      char[]operadores={'+', '-', '*', '/', '%', '^'};
      HashMapfrecuencia=new HashMap<>();
      for(char operador:operadores){
      frecuencia.put(operador, 0);
      }
      for (char c : expresion.toCharArray()) {
      if (frecuencia.containsKey(c)) {
      frecuencia.put(c, frecuencia.get(c) + 1);
      }
      }
      System.out.println("Frecuencia de operadores:");
      for(char operador:operadores){
      if(frecuencia.get(operador)>0){
      System.out.println(operador+": "+frecuencia.get(operador));
      }
      }
      }
      }

      Eliminar
    2. Modificando de la solución:

      import java.util.HashMap;
      import java.util.Scanner;

      public class ContadorOperadores {
      public static void main(String[] args) {
      Scanner scanner = new Scanner(System.in);
      System.out.print("Ingrese una expresión matemática: ");
      String expresion = scanner.nextLine();
      scanner.close();

      // Definir los operadores a contar
      char[] operadores = {'+', '-', '*', '/', '%', '^'};

      // Mapa para contar la frecuencia de cada operador
      HashMap frecuencia = new HashMap<>();

      for (char operador : operadores) {
      frecuencia.put(operador, 0); // Inicializar conteo en 0
      }

      // Contar la frecuencia de los operadores en la expresión
      for (char c : expresion.toCharArray()) {
      if (frecuencia.containsKey(c)) {
      frecuencia.put(c, frecuencia.get(c) + 1);
      }
      }

      // Mostrar los resultados
      System.out.println("Frecuencia de operadores:");
      for (char operador : operadores) {
      if (frecuencia.get(operador) > 0) {
      System.out.println(operador + ": " + frecuencia.get(operador));
      }
      }
      }
      }

      Eliminar
    3. Debido que no sé por qué no aparece lamentablemente no se puede modificar el texto cuando alguien es anónimo, pero me supongo que hay que separarlo.

      import java.util.HashMap;
      import java.util.Scanner;
      public class ContadorOperadores {
      public static void main(String[] args) {
      Scanner scanner = new Scanner(System.in);
      System.out.print("Ingrese una expresión matemática: ");
      String expresion = scanner.nextLine();
      scanner.close();
      char[] operadores = {'+', '-', '*', '/', '%', '^'};
      HashMap frecuencia = new HashMap<>();
      for (char operador : operadores) {
      frecuencia.put(operador, 0); // Inicializar conteo en 0
      }
      for (char c : expresion.toCharArray()) {
      if (frecuencia.containsKey(c)) {
      frecuencia.put(c, frecuencia.get(c) + 1);
      }
      }
      System.out.println("Frecuencia de operadores:");
      for (char operador : operadores) {
      if (frecuencia.get(operador) > 0) {
      System.out.println(operador + ": " + frecuencia.get(operador));
      }
      }
      }
      }

      Eliminar
    4. Yo te ayudo, claro que sí.

      Si necesitas leer una expresión en Java y contar cuántas veces aparece cada operador (+, -, *, /, %, etc.), puedes recorrer la cadena carácter por carácter y llevar un contador para cada operador.

      Ejemplo:

      import java.util.HashMap;
      import java.util.Map;
      import java.util.Scanner;

      public class FrecuenciaOperadores {
      public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);

      System.out.print("Ingrese una expresión: ");
      String expresion = sc.nextLine();

      Map frecuencia = new HashMap<>();

      for (int i = 0; i < expresion.length(); i++) {
      char c = expresion.charAt(i);

      if (c == '+' || c == '-' || c == '*' ||
      c == '/' || c == '%' || c == '=') {

      frecuencia.put(c, frecuencia.getOrDefault(c, 0) + 1);
      }
      }

      System.out.println("Frecuencia de operadores:");
      for (Map.Entry entry : frecuencia.entrySet()) {
      System.out.println(entry.getKey() + ": " + entry.getValue());
      }

      sc.close();
      }
      }
      Ejemplo de entrada
      a+b-c*d/e+a%2
      Salida posible
      Frecuencia de operadores:
      +: 2
      -: 1
      *: 1
      /: 1
      %: 1

      Si el ejercicio es académico y solo permite arreglos (sin HashMap), también puede hacerse con contadores individuales para cada operador.

      Eliminar
  49. Ejercicio propuesto:

    Una empresa paga a sus empleados una bonificación mensual según el número de ventas realizadas.

    Se pide hacer un programa en Java que:

    Solicite al usuario la cantidad de empleados (N)
    Para cada empleado, ingresar:
    nombre
    número de ventas
    monto total vendido
    Calcular la bonificación según:
    Si ventas >= 10 → 10% del monto vendido
    Si ventas >= 5 y < 10 → 5% del monto vendido
    Si ventas < 5 → 2% del monto vendido
    Mostrar:
    nombre del empleado
    bonificación
    Mostrar:
    total de bonificaciones pagadas
    empleado con mayor bonificación

    Solución:

    Java

    import java.util.Scanner;

    public class Bonificaciones {

    public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);

    System.out.print("Ingrese cantidad de empleados: ");
    int n = sc.nextInt();
    sc.nextLine();

    String[] nombres = new String[n];
    double[] bonos = new double[n];

    double totalBonos = 0;
    double mayorBono = 0;
    int posMayor = 0;

    for (int i = 0; i < n; i++) {

    System.out.println("\nEmpleado " + (i + 1));

    System.out.print("Nombre: ");
    nombres[i] = sc.nextLine();

    System.out.print("Numero de ventas: ");
    int ventas = sc.nextInt();

    System.out.print("Monto total vendido: ");
    double monto = sc.nextDouble();
    sc.nextLine();

    double bono;

    if (ventas >= 10) {
    bono = monto * 0.10;
    } else if (ventas >= 5) {
    bono = monto * 0.05;
    } else {
    bono = monto * 0.02;
    }

    bonos[i] = bono;
    totalBonos += bono;

    if (bono > mayorBono) {
    mayorBono = bono;
    posMayor = i;
    }
    }

    System.out.println("\n--- RESULTADOS ---");

    for (int i = 0; i < n; i++) {
    System.out.println(nombres[i] + " -> Bono: " + bonos[i]);
    }

    System.out.println("\nTotal de bonos pagados: " + totalBonos);
    System.out.println("Mayor bono: " + nombres[posMayor] + " con " + mayorBono);

    sc.close();
    }
    }

    EXPLICACIÓN SIMPLE

    ✔ Se usan arreglos para guardar empleados
    ✔ Se calcula bono según ventas
    ✔ Se acumula total
    ✔ Se busca el mayor bono

    EJEMPLO
    Entrada:
    Juan - 12 ventas - 1000
    Ana - 6 ventas - 800
    Luis - 3 ventas - 500
    Salida:
    Juan -> 100.0
    Ana -> 40.0
    Luis -> 10.0

    Total de bonos: 150.0
    Mayor bono: Juan con 100.0

    ResponderEliminar