181
Aprender a programar desde cero / Re:Ejercicio! entrega CU00674B
« en: 14 de Agosto 2014, 00:25 »
Gracias Mario, ya lo corregí con relación a lo que pide el ejercicio ![Sonreir ;D](https://aprenderaprogramar.com/foros/Smileys/default/grin.gif)
Saludos!
![Sonreir ;D](https://aprenderaprogramar.com/foros/Smileys/default/grin.gif)
Saludos!
Ahora Aprender A Programar está en Facebook. Noticias, novedades y mucho más. Síguenos en Facebook
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.
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.
}
}
package formas;
public class TestDetallesPackageFormas
{
public static void main(String []args)
{
DetallesPackageFormas detalles = new DetallesPackageFormas();
detalles.rutas();
}
}
public class DetallesPackageFormas 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 package formas.formas1dimension;
public class Curva
{
public Curva()
{
}
public String getRutaDeClase()
{
return getClass().toString();
}
}
public class Recta package formas.formas1dimension;
public class Recta
{
public Recta()
{
}
public String getRutaDeClase()
{
return getClass().toString();
}
}
public class Triangulo package formas.formas2dimension;
public class Triangulo
{
public Triangulo()
{
}
public String getRutaDeClase()
{
return getClass().toString();
}
}
public class Cuadrilatero package formas.formas2dimension;
public class Cuadrilatero
{
public Cuadrilatero()
{
}
public String getRutaDeClase()
{
return getClass().toString();
}
}
public class Eclipse package formas.formas2dimension;
public class Eclipse
{
public Eclipse()
{
}
public String getRutaDeClase()
{
return getClass().toString();
}
}
public class Cilindro package formas.formas3dimension;
public class Cilindro
{
public Cilindro()
{
}
public String getRutaDeClase()
{
return getClass().toString();
}
}
public class Cono package formas.formas3dimension;
public class Cono
{
public Cono()
{
}
public String getRutaDeClase()
{
return getClass().toString();
}
}
public class Esfera package formas.formas3dimension;
public class Esfera
{
public Esfera()
{
}
public String getRutaDeClase()
{
return getClass().toString();
}
}
Saludos!
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:
static final Circulo circunferencia = new Circulo();
con lo que mas adelante en el código con el main, no podría hacer algo como: 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. 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
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!
listaDeNum.get(numAleatorio.nextInt(listaDeNum.size()));
para usar el numero devuelto por esta sentencia como el numero secreto a adivinar. 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?
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 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.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 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 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!
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!
import javax.swing.JOptionPane;
public class ejemplo1 {
public static void main (String[] Args) {
String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );
}
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. 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: 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. 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.");
}
}
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: 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?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?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 metodoentradaTeclado(); 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:
substring no deberias de declarar una Variable que contuviera "entradaTeclado.substring(0,1)" y ya despues si hacer el "equals".
if(entradaTeclado().equals(x())){...;}
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"))
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