Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Jorge lopez

Páginas: 1 ... 5 6 7 8 9 [10] 11 12 13
181
 Gracias Mario, ya lo corregí con relación a lo que pide el ejercicio  ;D
Saludos!

182
 Copiando un array a un ArrayList.
public class CopiarArrayEnArrayList
Código: [Seleccionar]
import java.util.ArrayList;
public class CopiarArrayEnArrayList
{
    public static void main(String []args)
    {
      System.out.println("Array (estatico) miArray1, de primitivos int:\n");
      int[] miArray1 = {2, -4, 3, -7};
      ArrayList<Integer > lista1 = new ArrayList<Integer >();
      String espacio;
      for(int i = 0; i < miArray1.length; i++)
      {
        lista1.add(miArray1[i]);
        espacio = "";
        if(Integer.signum(miArray1[i]) == 1)
        {
          espacio = " ";
        }
        System.out.println(espacio + miArray1[i]);
      }
      System.out.println("\nArrayList (dinamico) lista1, de objetos Integer:\n");
      for(Integer objeto: lista1)//Tambien se puede usar un for tradicional, y el método get(int) para recorrer el ArrayList lista1.
      {
        espacio = "";
        if(Integer.signum(objeto) == 1)
        {
          espacio = " ";
        }
        System.out.println(espacio + objeto);
      }
      //El metodo signum(int i) de la clase Integer devuelve 1 si i es igual a un numero positivo, y -1 si i es igual a un numero negativo.
    }
}
 

183
Ejercicio con packages.

public class TestDetallesPackageFormas
Código: [Seleccionar]
package formas;
public class TestDetallesPackageFormas
{
    public static void main(String []args)
    {
       DetallesPackageFormas detalles = new DetallesPackageFormas();
       detalles.rutas();
    }
}
public class DetallesPackageFormas
Código: [Seleccionar]
package formas;
 import javax.swing.JOptionPane;
 import formas.formas1dimension.*;
 import formas.formas2dimension.*;
 import formas.formas3dimension.*;
public class DetallesPackageFormas
{
    private Curva curva;
    private Recta recta;
    private Triangulo triangulo;
    private Cuadrilatero cuadrilatero;
    private Eclipse eclipse;
    private Cilindro cilindro;
    private Cono cono;
    private Esfera esfera;
    private JOptionPane mensaje;
    public DetallesPackageFormas()
    {
       curva = new Curva();
       recta = new Recta();
       triangulo = new Triangulo();
       cuadrilatero = new Cuadrilatero();
       eclipse = new Eclipse();
       cilindro = new Cilindro();
       cono = new Cono();
       esfera = new Esfera();
       mensaje = new JOptionPane();
    }

    public  void rutas()
    {
      mensaje.showMessageDialog(null, " Paquete formas:\n______________________________\nSub-paquete formas1dimension:\n|_____________________________ |\n" +
      curva.getRutaDeClase() + "\n" + recta.getRutaDeClase() +
      "\n______________________________\nSub-paquete formas2dimension:\n|_____________________________ |\n" + triangulo.getRutaDeClase() + "\n" + cuadrilatero.getRutaDeClase() +
      "\n" + eclipse.getRutaDeClase() +
      "\n______________________________\nSub-paquete formas3dimension:\n|_____________________________ |\n" + cilindro.getRutaDeClase() + "\n" +
      cono.getRutaDeClase() + "\n" + esfera.getRutaDeClase() + "\n______________________________", "Package formas (sub-packages/clases/rutas)", 1);
    }
}
public class Curva
Código: [Seleccionar]
package formas.formas1dimension;
public class Curva
{
    public Curva()
    {

    }

    public String getRutaDeClase()
    {
      return getClass().toString();
    }
}
public class Recta
Código: [Seleccionar]
package formas.formas1dimension;
public class Recta
{
    public Recta()
    {

    }

    public String getRutaDeClase()
    {
      return getClass().toString();
    }
}
public class Triangulo
Código: [Seleccionar]
package formas.formas2dimension;
public class Triangulo
{
    public Triangulo()
    {

    }

    public String getRutaDeClase()
    {
      return getClass().toString();
    }
}
public class Cuadrilatero
Código: [Seleccionar]
package formas.formas2dimension;
public class Cuadrilatero
{
    public Cuadrilatero()
    {

    }

    public String getRutaDeClase()
    {
      return getClass().toString();
    }
}
public class Eclipse
Código: [Seleccionar]
package formas.formas2dimension;
public class Eclipse
{
    public Eclipse()
    {

    }

    public String getRutaDeClase()
    {
      return getClass().toString();
    }
}
public class Cilindro
Código: [Seleccionar]
package formas.formas3dimension;
public class Cilindro
{
    public Cilindro()
    {

    }

    public String getRutaDeClase()
    {
      return getClass().toString();
    }
}
public class Cono
Código: [Seleccionar]
package formas.formas3dimension;
public class Cono
{
    public Cono()
    {

    }

    public String getRutaDeClase()
    {
      return getClass().toString();
    }
}
public class Esfera
Código: [Seleccionar]
package formas.formas3dimension;
public class Esfera
{
    public Esfera()
    {

    }

    public String getRutaDeClase()
    {
      return getClass().toString();
    }
}
Saludos!

184
Citar
Aparte de esto, no se porque declaras el circulo de la clase CalculadoraMedidasCirculo, lo declaras como una constante...
Al igual que declare los atributos y el constructor de la clase con el main, también declare circunferencia como constante, a modo de ejemplo para ilustrar cuando se puede y cuando no, reasignar un valor a un campo de clase, por ejemplo: la clase Circulo cuenta con 2 constructores diferentes, en la clase con main declaro:
Código: [Seleccionar]
static final Circulo circunferencia = new Circulo();con lo que mas adelante en el código con el main, no podría hacer algo como:
Código: [Seleccionar]
circunferencia = new Circulo(//Constructor con parámetros de la clase Circulo);en realidad no hay nada de funcionalidad positiva en esto en cuanto a la eficiencia del codigo, mas bien es un ejemplo, pero lo hice consientemente.
Saludos y gracias otra vez por revisar dongo.

185
Aprender a programar desde cero / Corrección!
« en: 09 de Agosto 2014, 18:48 »
 Nota: sustituir la constante "circunsferencia" dentro del bucle while, por la constante "circunferencia" en la clase CalculadoraMedidasCirculo para evitar error en compilación (me descuide con el auto corrector  ;D) , esperando comentarios.
Saludos!

186
Pregunta: ¿Es posible crear un método en la clase Circulo para establecer el valor de numeroPi? ¿Por qué?

Respuesta: No, no es posible debido a que numeroPi en el código al que referencia es una constante y no una variable.

public class CalculadoraMedidasCirculo
Código: [Seleccionar]
import javax.swing.*;
public class CalculadoraMedidasCirculo
{
  static final Circulo circunferencia = new Circulo();/*digamos que final protege de una posible reasignacion de valor a circunferencia, por ejemplo:
  supongamos que la clase Circulo cuenta con un constructor con parámetros, circunferencia = new Circulo(double parametro)*/
  static  JOptionPane mensaje = new JOptionPane(); 
  public void CalculadoraMedidasCirculo()
  {
   
  }
 
  public static void main(String []args)
  {
    boolean finalizado = false;
    while(finalizado == false)
    {
      String stringRadio = mensaje.showInputDialog(null, "Introduce el radio del circulo", "Area, Longitud y Diametro de un circulo", 3);
      double radio = Double.valueOf(stringRadio);
      circunsferencia.setRadio(radio);
      mensaje.showMessageDialog(null, "________________________________________\nArea = "
      + circunsferencia.areaCirculo() + "\n________________________________________"
      +"\nLongitud = " + circunsferencia.longitudCirculo() + "\n________________________________________"
      + "\nDiametro = " + circunsferencia.diametroCirculo() + "\n________________________________________", "Resultados!", 1);
      int volver = mensaje.showConfirmDialog(null,"Deseas calcular el Area, Longitud y Diámetro de otro circulo?","Confirmar",0);
      if(volver == 0)
      {
        finalizado = false;
      }
      else if(volver == 1)
      {
        finalizado = true;
      }
    }
    //circunsferencia = new Circulo(2.5); error por circunferencia estar declarada como constante (final).
    mensaje = new JOptionPane(" "); //Compila por mensaje ser una variable y no una constante, independientemente de que esta sea static o no.
  }
}
public class Circulo
Código: [Seleccionar]

public class Circulo
{
  private static final double NUMERO_PI = 3.1416;
  private static double radio;
  //Constructor general
  public Circulo()
  {
    radio = 0.0;
  }
  //Constructor con parámetros
  public Circulo(double radio)
  {
    this.radio = radio;
  }
  //setter
  public void setRadio(double radio)
  {
    this.radio = radio;
  }
  //getter
  public double getRadio()
  {
    return radio;
  }
  //otros metodos
  public double areaCirculo()
  {
    return NUMERO_PI*(radio*radio);
  }
 
  public double longitudCirculo()
  {
    return (2*NUMERO_PI)*radio;
  }
 
  public double diametroCirculo()
  {
    return radio*2;
  }
}
Saludos!

187
Copiado!

188
 El problema para que BigInteger trabaje en mi código seria el siguiente:

Que la variable cantidad contenga un BigInteger y que el numero aleatorio se genere entre 1 y el valor de cantidad. Ejempl: 1 y "999999999999999999999999999999999999999" indicado por el usuario.

No se si me e explicado bien.
Saludos.

189
 Aunque no pude asociar un  BigInteger("numero") a mi código y lograr que compile y trabaje como a de esperarse, encuentro el objeto BigInteger("numero") muy muy muy útil e interesante.
Gracias por este aporte dongo.
Saludos!

190
 Hola!
Mi primera intención al crear un ArrayList fue la siguiente: 1ro: Crear un ArrayList que contenga tantos números como indique la variable cantidad. 2do: que dichos numero se agregaran al ArrayList en orden ascendente desde el 1 hasta el valor de cantidad, desde la posición 0 hasta la posición (cantidad - 1). y 3ro: usar una sentencia como:
Código: [Seleccionar]
listaDeNum.get(numAleatorio.nextInt(listaDeNum.size())); para usar el numero devuelto por esta sentencia como el numero secreto a adivinar.

Una vez revisado el código luego de el comentario de Cesar, me di cuenta que esta intención ademas de ser innecesaria, limita la eficiencia del programa.
 
He rediseñado el código corrigiendo los puntos comentados por Cesar y e incorporado nuevas mejoras.

Citar
Ahora te planteo las siguientes preguntas:

1: ¿Realmente es necesario crear la lista para después elegir el número?

2: ¿Si tuviéramos que elegir un aleatorio entre decimales qué ocurriría?

3: ¿Sería eficiente el proceso si el aleatorio hubiera que elegirlo entre 1 y 100000000000?

 Respuestas:

1: No, no es necesario  ;D

2: Para esto abría que rediseñar el código para que trabaje con números tipo float y usar métodos como nextFloat(); ext.

3: Al indicar un numero tan grande como 1000000000, se obtiene un error de tipo: java.lang.OutOfMemoryError: Java heap space (in java.util.ArrayList). Tambien note que se demora un tiempo en saltar este error, al parecer esta operación consume bastante memoria.

A continuación las dos clases rediseñadas:
public class GeneradorNumAleatorio
Código: [Seleccionar]
import java.util.*;
public class GeneradorNumAleatorio
{
  private Random numAleatorio;
  private long cantidad;
  public GeneradorNumAleatorio()
  {
    numAleatorio = new Random();
    cantidad = 0L;
  }
 
  public void setCantidad(long entero)
  {
    cantidad = entero;
  }
 
  public long getCantidad()
  {
    return cantidad;
  }
 
  public long generarNumAleat()
  {
    return numAleatorio.nextInt((int)getCantidad()) + 1;
  }
}
public class AdivinarNum
Código: [Seleccionar]
import javax.swing.*;
public class AdivinarNum
{
 public AdivinarNum()
 {
    //Nada que declarar
 }
 
 public static void main(String []args)
 {
   System.out.println("Vamos a jugar a adivinar un numero, primero introduce la cantidad de números que quieres que contenga la adivinanza:");
   EntradaDeTeclado entradaMain = new EntradaDeTeclado();
   GeneradorNumAleatorio aleatorio = new GeneradorNumAleatorio();
   entradaMain.pedirEntrada();
   long entero = Long.valueOf(entradaMain.getEntrada());
   aleatorio.setCantidad(entero);
   System.out.println("\f\nAhora intenta adivinar el numero secreto que se ha generado aleatoriamente entre los numeros del 1 al " + entero + ".");
   long numSecreto = aleatorio.generarNumAleat();
   boolean resuelto = false;
   int i = 0;
   do
   {
     entradaMain.pedirEntrada();
     long stringToLong = Long.valueOf(entradaMain.getEntrada());
     int respuesta = 2;/*int respuesta se inicializa con un valor distinto a los valores numéricos que representan botones en el método showConfirmDialog(null,"","",0);
     de la clase JOptionPane, los cuales son 0 = boton: yes/si y 1 = boton: not/no, para así evitar errores en la ejecución del programa.*/
     long merrindo = Long.valueOf(entradaMain.getEntrada());
     
     if(merrindo == 0)
     {
       System.out.println("\f\nEsperando...");
       JOptionPane.showMessageDialog(null,"El numero secreto era: " + numSecreto + "\nPulsa aceptar/Ok para continuar...", "Ups! te has rendido.", 2);
       resuelto = true;
     }
     else if(numSecreto == stringToLong)
     {
        resuelto = true;
     }
     else
     {
       resuelto = false;
     }
     if(resuelto == false && numSecreto < stringToLong)
     {
        System.out.println("\f\nEl numero secreto no es " + stringToLong + ", intenta con un numero menor. Si deseas rendirte y conocer la respuesta introduce el numero \"0" + "\""); i++;
     }
     else if(resuelto == false && numSecreto > stringToLong)
     {
        System.out.println("\f\nEl numero secreto no es " + stringToLong + ", intenta con un numero mayor. Si deseas rendirte y conocer la respuesta introduce el numero \"0" + "\""); i++;
     }
     if(resuelto == true && merrindo != 0)
     {
       System.out.println("\f\nFelicitaciones! Has acertado, el numero secreto es " + numSecreto +
       ".\nTe costo " + i +  " intentos fallidos adivinar este numero secreto.\n\n\nEsperando respuesta...");
     }
     if(resuelto == true)
     {
       if(numSecreto != stringToLong)
       {
         System.out.println("\fEsperando respuesta...");
       }
       respuesta = JOptionPane.showConfirmDialog(null,"Te gustaría intentar adivinar otro numero secreto ?","Confirmar",0);
     }
     if(respuesta == 0)
     {
       System.out.println("\f\nSe ha generado un nuevo numero secreto al azar entre el 1 y el " + entero + ", intenta adivinarlo:");
       numSecreto = aleatorio.generarNumAleat();
       resuelto = false;
       i = 0;
     }
     else if(respuesta == 1)
     {
       System.out.println("\f\nFinalizando...");
       JOptionPane.showMessageDialog(null,"Hasta luego...","Gracias por jugar a adivinar números",1);
       resuelto = true;
       if(resuelto = true)
       {
         System.out.println("\fFin del juego...");
       }
     }
   }while(resuelto == false);
 }
}
 
La clase EntradaDeTeclado no tuvo ningún cambio.
Gracias por sus comentarios y observaciones.
Saludos!

191
 Hola!
public class EntradaDeTeclado
Código: [Seleccionar]
import java.util.Scanner;
public class EntradaDeTeclado
{
 private String entradaTeclado;
 public EntradaDeTeclado()
 {
   entradaTeclado = "";
 }
 public void pedirEntrada()
 {
   Scanner entradaEscaner = new Scanner (System.in);
   entradaTeclado = entradaEscaner.nextLine ();
 }
 public String getEntrada()
 {
   return entradaTeclado;
 }
}
public class GeneradorNumAleatorio
Código: [Seleccionar]
import java.util.*;
public class GeneradorNumAleatorio
{
  private ArrayList<Integer> listaDeNum;
  private Random numAleatorio;
  public GeneradorNumAleatorio()
  {
    listaDeNum = new ArrayList<Integer>();
    numAleatorio = new Random();
  }
 
  public void addNumeros(int cantidad)
  {
    for(int i = 1; i <= cantidad; i++)
    {
      listaDeNum.add(i);
    }
  }
 
  public void mostrarNumEnLista()
  {
    for(Integer numero: listaDeNum)
    {
      System.out.println(numero);
    }
  }
 
  public int getSize()
  {
    return listaDeNum.size();
  }
 
  public int generarNumAleat()
  {
    return listaDeNum.get(numAleatorio.nextInt(listaDeNum.size()));
  }
}
public class AdivinarNum
Código: [Seleccionar]
import javax.swing.*;
public class AdivinarNum
{
 public AdivinarNum()
 {
    //Nada que declarar
 }
 
 public static void main(String []args)
 {
   System.out.println("Vamos a jugar a adivinar un numero, primero introduce la cantidad de números que quieres que contenga la adivinanza:");
   EntradaDeTeclado entradaMain = new EntradaDeTeclado();
   GeneradorNumAleatorio listaConNum = new GeneradorNumAleatorio();
   entradaMain.pedirEntrada();
   int entero = Integer.parseInt(entradaMain.getEntrada());
   listaConNum.addNumeros(entero);
   System.out.println("\f\nAhora intenta adivinar el numero secreto que se ha elegido aleatoriamente entre los números del 1 al " + listaConNum.getSize() + ".");
   int numSecreto = listaConNum.generarNumAleat();
   boolean resuelto = false;
   int i = 0;
   do
   {
     entradaMain.pedirEntrada();
     int stringToInt = Integer.parseInt(entradaMain.getEntrada());
     int respuesta = 2;/*int respuesta se inicializa con un valor distinto a los valores numéricos que representan botones en el método showConfirmDialog(null,"","",0);
     de la clase JOptionPane, los cuales son 0 = botón: yes/si y 1 = botón: not/no, para así evitar errores en la ejecución del programa.*/
     if(numSecreto == stringToInt)
     {
        resuelto = true;
     }
     else
     {
       resuelto = false;
     }
     if(resuelto == false && numSecreto < stringToInt)
     {
        System.out.println("\f\nEl numero secreto no es " + stringToInt + ", intenta con un numero menor."); i++;
     }
     else if(resuelto == false && numSecreto > stringToInt)
     {
        System.out.println("\f\nEl numero secreto no es " + stringToInt + ", intenta con un numero mayor."); i++;
     }
     if(resuelto == true)
     {
       System.out.println("\f\nFelicitaciones! Has acertado, el numero secreto es " + numSecreto + ".\nTe costo " + i +  " intentos fallidos adivinar este numero secreto.");
     }
     if(resuelto == true)
     {
        respuesta = JOptionPane.showConfirmDialog(null,"Te gustaría volver a adivinar otro numero secreto ?","Confirmar",0);
     }
     if(respuesta == 0)
     {
       System.out.println("\f\nSe ha elegido un nuevo numero secreto al azar entre el 1 y el " + listaConNum.getSize() + ", intenta adivinarlo:");
       numSecreto = listaConNum.generarNumAleat();
       resuelto = false;
       i = 0;
     }
     else if(respuesta == 1)
     {
       System.out.println("\f\nComo prefieras!\nGracias por jugar a adivinar números.\nHasta luego...");
       resuelto = true;
     }
   }while(resuelto == false);
 }
}
Saludos!

192
 Gracias por revisar Mario. Saludos!

193
 int*String = bad operation.
incompatibilidad entre tipos.
Solución: realizar la operación de multiplicación entre tipos compatibles mediante una conversion del String a int, double, float, ext.
una de las muchas posibles soluciones seria esta:
Código: [Seleccionar]
import javax.swing.JOptionPane;
public class ejemplo1 {
    public static void main (String[] Args) {
        String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );
        if(entradaUsuario.contains("."))
        {
          double decimal = Double.parseDouble(entradaUsuario);
          System.out.println ("El doble del número introducido es: " + 2*decimal);
        }
        else
        {
          Integer entero = Integer.parseInt(entradaUsuario);
          System.out.println ("El doble del número introducido es: " + 2*entero);
        }
        //El if, se encarga de regular el resultado mostrado por consola, si introduces un decimal ejemp: 2.0 retorna 4.0 si introduces un entero ejemp: 2 retorna 4
    }
}
Saludos!

194
Aprender a programar desde cero / Re:Ayuda! CU00670B curso java
« en: 04 de Agosto 2014, 17:31 »
 Ya he podido solucionar el "problema".
El problema era que al ejecutar el main del código:
Código: [Seleccionar]
import javax.swing.JOptionPane;
public class ejemplo1 {
    public static void main (String[] Args) {
        String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );
}

la ventana que me salia era solo la ventana de salida, donde yo pensaba erróneamente que esta debía de mostrar el mensaje "Introduzca un número:" y recibir una entrada por esa misma ventana, yo ignoraba que al invocar el main saltaban 2 ventanas, una que despliega el mensaje "Introduzca un número:" y recibe la entrada y otra que se supone mostrara un mensaje de salida (el cual no declare a propósito). La primera ventana se estaba quedando en el escritorio de la pc, debajo de otras ventanas como la de bluej, chrome, entre otras y como ignoraba su existencia y solo me salia la primera ventana, yo pretendía ver el mensaje: "Introduzca un número:" escribir un numero y ver el resultado todo en una sola ventana. Son pequeñeces que aveces nos complican la vida, pero como dicen por ahí: el que no sabe es como el que no ve  ;D.
muchas gracias por contestar toni.
Saludos!

195
Aprender a programar desde cero / Re:Ayuda! CU00670B curso java
« en: 04 de Agosto 2014, 02:41 »
 Ese es todo el código que tengo en la clase, y no hace lo que se supone debe hacer, que es mostrar un mensaje, pedir una entrada y al pulsar enter detener el JVM, al parecer el problema no es del código sino de mi ordenador o del JVM  :-\

196
 He estado tratando de realizar el ejercicio CU00670B para el cual ya encontré respuesta, he logrado compilar el código pero al ejecutar el main, el programa presenta las siguientes anomalías: 1ro: no muestra por pantalla el mensaje Introduzca un número:" . y 2do: al escribir en la entrada de teclado y pulsar enter, el programa entra en bucle infinito, permitiéndome infinitas entradas.

Reduci el codigo hasta esta sintaxis para verificar que el bucle infinito no es por causa de algun codigo propio erroneo:
Código: [Seleccionar]
import javax.swing.JOptionPane;
public class TestConversion
{
  public static void main (String[] Args)
  {
   String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );
  }
}
donde se supone que con esta sintaxis, el programa deveria desplegar el mensaje Introduzca un número:" y seguidamente una entrada de teclado, y al pulsar enter se debería detener el JVM y asignar lo escrito como valor de la variable entradaUsuario.

pero contrario a esto el JVM no se detiene y se queda como bucle sin salida pidiendo entradas.

ayuda : :(

197
 Mi duda había surgido debido a un concepto erróneo que tenia el cual fue aclarado con sus comentarios, gracias dongo, gracias Alex.

Concepto erróneo: Si al compilar el codigo:
Código: [Seleccionar]
String [] lista = {"enero", "...", "diciembre", "wisky"}; el compilador no me da un error de tipo: java.lang.ArrayIndexOutOfBoundsException:  Entonces tengo un Array dinámico, porque me permite agregar tantos meses como me imagine, y como estoy programando borracho y la borrachera me dio con creer que un meteorito impacto la tierra y que tenemos un nuevo mes 13 con nombre whisky XD entonces lo he agregado. A diferencia de usar un código como:
Código: [Seleccionar]
String [] lista; lista = new String[12]; lista[0] = "enero"; lista[...] = "..."; lista[12] = "whisky"; Donde también estoy borracho pero java me cubre la espalda y me dice:  java.lang.ArrayIndexOutOfBoundsException. traducción de lo que me dice java: Estas borracho? estas agregando 13 meses donde ayer cuando no estabas borracho indicaste que solo son 12 meses.

Convicción: Lo que hace un Array estático o no estático es la forma en que se declare, ejemplo: int [] lista = {1,2,3,...}; o int [] lista; lista = new int [3];
lista[0] = 1;
lista[1] = 2;
lista[2] = 3;
y que no importa que en una declaración como: int [] mesesEnNumeros = {1,2,3,...,13};
java acepte que se agregue un objeto 13, la lógica: un año = 12 meses, es quien debe limitar el Array a 12 objetos, (por lo que se recomienda no programar borracho XD).
una vez mas muchas gracias.
Nota: realice algunos ajustes al código, me gustaría que opinen a cerca de la utilidad que le doy al condicional switch.
Saludos.
Pos data: Si no mal entendí, me parece que estas accidentado dongo, si es así espero te recuperes!

198
A continuación el código del ejercicio:
public class AdivinarMesSecreto
Código: [Seleccionar]
import java.util.*;
public class AdivinarMesSecreto
{
    public AdivinarMesSecreto()
    {

    }
   
    public static void main(String []args)
    {
      String [] listaDeMeses = {"enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"};
      String mesSecreto = listaDeMeses[(int)(Math.random() * 12)];
      System.out.println("\f\nAdivina el mes secreto, por favor escribe el nombre de un mes...");
      Scanner escaner = new Scanner(System.in);
      String entrada;
      entrada = "";
      String pista = "No disponible.";
      String detalles = "No disponible.";
      boolean resuelto = false;     
      do
      {
        entrada = escaner.nextLine();
        if(entrada.equalsIgnoreCase(mesSecreto))
        {
          resuelto = true;
        }else
        {
          resuelto = false;
        }
       
        if(resuelto == false)
        {
          System.out.println("\f\nTe has equivocado! el mes secreto no es " + entrada + ", Desas optener una pista (s/n)?");
          entrada = escaner.nextLine();
          switch(mesSecreto)
          {
            case "enero": pista = "Pista: Primero lo primero."; detalles = "enero es el primer mes."; break;
            case "febrero": pista = "Pista: Que opinas de cupido?"; detalles = "febrero es el mes de cupido."; break;
            case "marzo": pista = "Pista: Me párese haber visto un marziano."; detalles = "en realidad se escribe marciano, pero marziano hace pensar mas en el mes marzo."; break;
            case "abril": pista = "Pista: tortugas ninjas, reportera, te suena?"; detalles = "la reportera del comic, ninjas tortugas adolescentes mutantes se llama abril."; break;
            case "mayo": pista = "Pista: Ella me dijo: si veo una rata me desmayo, Lolz."; detalles = "muy clara, mes de mayo."; break;
            case "junio": pista = "Pista: mitad."; detalles = "la mitad de 12 es 6, junio es el mes 6."; break;
            case "julio": pista = "Pista: Cantante de apellido iglesias."; detalles = "Cantante julio iglesias."; break;
            case "agosto": pista = "Pista: Se agoto mi paciencia."; detalles = "solo faltaria incluir una (s) para que agoto de agotar, sea el mes de ago(s)to."; break;
            case "septiembre": pista = "Pista: El mas largo de todos."; detalles = "septimembre es el mes con mas letras.";break;
            case "octubre": pista = "Pista: 5 + 5."; detalles = "5 + 5 = 10, mes 10 = octubre"; break;
            case "noviembre": pista = "Pista: Sus dos primeras letras forman el sinónimo de la palabra (si)"; detalles = "sinónimo de si = no, noviembre."; break;
            case "diciembre": pista = "Pista: navidad?"; detalles = "diciembre = navidad.";break;
            default: pista = pista; detalles = detalles; break;
          }
          if(entrada.equalsIgnoreCase("s"))
          {
            System.out.println("\f\n" + pista);
          }
          else if(entrada.equalsIgnoreCase("n"))
          {
            System.out.println("\f\nAsi que prefieres adivinar sin pistas, pues inténtalo nuevamente.");
          }
        }
      }while(resuelto == false);
      System.out.println("\f\nHas acertado!! El mes secreto entre los " + listaDeMeses.length + " meses es: " + mesSecreto + ".\n");
      System.out.println(pista + "\n" + "Detalles sobre la pista: " + detalles + "\n" + "\nHasta luego.");
    }
}

 Tengo la siguiente duda: si al referirnos a un "Array estático" hacemos referencia a una colección, arreglo, o lista de tamaño predefinido, cuya diferencia en comparación con un ArrayList es que el ArrayList es dinámico, redimensionable, flexible, ext. Y el Array estático tiene una dimension delimitada por un int, por ejemplo:
Código: [Seleccionar]
public class Ejemplo{
    public String [] listaDeMeses;
    public Ejemplo()
    {
     String [] listaDeMeses = new String[12];
    }
}
donde int 12 limita al Array al que apunta la variable apuntadora listaDeMeses a contener 12 o menos de 12 objetos tipo String y no mas de 12. Aquí viene mi duda: al declarar una sintaxis como:
Código: [Seleccionar]
String [] listaDeMeses = {"enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"}; estoy creando un Array estático o un Array dinámico?
si es dinamico por no estar limitado a 12 objetos, seria un ArrayList como el siguiente:
Código: [Seleccionar]
import java.util.*;
public class Ejemplo{
    public ArrayList<String>lista;
    public Ejemplo()
    {
     lista = new ArrayList<String>();
     lista.add("enero");
     lista.add("enero");
     lista.add("...diciembre");
    }
 }
aceptable en este ejercicio?
Espero no ser muy curioso
Saludos!

199
 Hola Zikem10, la pregunta no esta muy clara, pero intentare responder.

Una Duda porque cuando se supone que usamos "equals" que estuve revisando y es un metodo de comparacion pero mi duda es no se supone que este metodo lo estaria comparando  con " entradaTeclado " porque se supone que al  usar el metodo
 substring  no deberias de declarar una Variable que contuviera "entradaTeclado.substring(0,1)" y ya despues si hacer el "equals".
entradaTeclado(); es un método y equals(); es otro método, no puedes comparar estos dos métodos entre si,  para poder realizar una comparación utilizando estos dos métodos necesitas un segundo factor a comparar, donde entradaTeclado(); es el  "primer factor" y x(); seria el segundo factor y donde el método equals(); es quien compara estos dos factores, la sintaxis seria la siguiente:

Código: [Seleccionar]
if(entradaTeclado().equals(x())){...;}

Analicemos el siguiente código a modo de ejemplo:
public class Ejemplo
Código: [Seleccionar]
public class Ejemplo
{
 public Ejemplo()//Constructor de la clase
 {
  //nada que declarar 
 }
   
 public String primerFactor()//metodo que devuelve un objeto
 {
  return "a";
 }
 
 public String segundoFactor()//metodo que devuelve un objeto
 {
  return "a";
 }
 
 public boolean compararObjetos()//metodo que compara dos objetos y devuelve true en caso de estos dos objetos ser idénticos o false en caso contrario
 {
  if(primerFactor().equals(segundoFactor()))
  {
    return true;
  }else{return false;}
 }
}
Una traducción de la condición a evaluar en el metodo compararObjetos(); seria: Si el objeto devuelto por el método primerFactor, es idéntico al objeto devuelto por el método segundoFactor, entonces devuelve true y en caso contrario devuelve false. Si ejecutas el método compararObjetos() tal y como esta, notaras que devolverá true, prueba a cambiar uno de los valores de retorno de cualquiera de los dos primeros métodos y ejecuta nuevamente el método compararObjetos. Aun el método compararObjetos() devuelve el mismo resultado?

porque se supone que al  usar el metodo
 substring  no deberias de declarar una Variable que contuviera "entradaTeclado.substring(0,1)" y ya después si hacer el "equals".

Esta es la parte del ejercicio
if(numeroCaracteres < 5 && entradaTeclado.substring(0,1).equals ("A") || numeroCaracteres < 5 && entradaTeclado.substring(0,1).equals ("a"))

Si, yo podria declarar lo siguiente: String A = entradaTeclado.substring(0,1);

if(numeroCaracteres < 5 && A.equals ("A") || numeroCaracteres < 5 && A.equals ("a")){...;} pero debemos optar siempre por la simplificación al momento de programar, para que declarar la variable A, si puedo hacer la comparación directamente entre proceso (entradaTeclado.substring(0,1)) y objeto ("a") o objeto ("A"). A fin de cuentas el método equals no toma en cuenta ni el nombre del método a comparar ni el proceso que realice siempre y cuando este devuelva un objeto tipo String. Declarar una variable como A, en lo personal y segun correcciones en algunos de mis ejercicios seria algo así como: darle vueltas al asunto. Es mas practico y aceptable siempre que se pueda ir directo al asunto y así simplificar el código. Recuerda que los dos primeros métodos devuelven cada uno un String y que un String es un objeto, y que equals es un método para comparar igualdad entre objetos tipo String, teniendo en cuenta que la igualdad de un objeto es algo distinto a la identidad de un objeto.
Espero que encuentres algo útil en este comentario.
Saludos. 

200
 Yo diría que mas que sacar algo positivo, sacare muuuchisimo positivo, ya estoy trabajando en el rediseño del código, no posteare el ejercicio nuevamente pero te puedo asegurar que corregire todos los puntos comentados y me esforzare para identificar alguna otra posible debilidad o reinvención de la rueda, lolz  ;D, Muchísimas gracias Cesar por tener la amabilidad de emplear tu tiempo en verificar y comentar mi código.
Saludos!

Páginas: 1 ... 5 6 7 8 9 [10] 11 12 13

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".