Aprendiendo a programar en Java... con el movil

HeXaN

#30 No ha dilema alguno: hay que generar una buena documentación.

B

Bromas aparte, lo primero que hago en un editor de texto es convertir tab a espacios, tabular como tal es una salvajada xD

1
afhn

4espacios vs 1 tab, no sé, no sé.

1 respuesta
eondev

#33 4 espacios vs 2
Fight!

2 respuestas
afhn

#34 8 espacios vs 2 tabs a segundo nivel.

yasurio

#34 subo 1 espacio y bajo 1 tab giren sus apuestas

Xustis

#2 ¿Los odias porque pueden ver mucho mejor donde empieza y acaba mucho mejor que tú?

L

Bueno, otro juego de adivinar un número, esta vez es el mastermind, el juego de deducir una secuencia de colores, en este caso con números de 4 cifras, usando pistas. Un "asterisco" para los números correctos y bien colocados y un "más" para los números correctos pero mal colocados. El "menos" indica que un número no tiene ningun tipo de coincidencia.

Esta vez he usado una clase en otro archivo diferente, me ha dado algún dolor de cabeza el tema de las clases y el uso de las variables, y me ha obligado a hacer una función en la clase Main porque me daba un error que no entiendo con una variable al intentar hacerlo como un método de la clase Master.

Pero bueno, es posible que fuera alguna chorrada, y tampoco se explicar cuál era el error ahora, así que me quedo con la duda hasta que ocurra de nuevo.

Aquí está el código.
la clase Main

spoiler

y la clase Master

spoiler

No se se si así esta el codigo bien estructurado o está correcto el tema de la clase Master, no estoy del todo seguro cuando una variable a método debe ser público o privado, static o no, me ha dado algún problema, al final por eliminación lo voy sacando pero...

Si alguien quiere darme algún consejo sera bienvenido.

Saludos.

B

Tab > espacios

Comentarios? El método de por si es ya autoexplicativo.

L

Hola .
Tengo un problemilla simple pero no encuentro una solución.

El otra vez el mastermind pero ahora es el programa quien tiene que adivinar el numero que estoy pensando. He hecho lo difícil, conseguir que en pocos intentos adivine un numero por eliminacion de posibilidades, pero me falla lo mas simple.

Al principio del bucle me pide que piense un número y que pulse intro, cuando termina me pregunta si quiero continuar y al repetir se salta la pulsación de intro, imagino que es por que al final debo pulsar intro para continuar, y al continuar entro en el do con intro pulsado y se salta la sentencia, pero no se como evitarlo.

A ver si me echáis una mano

spoiler
1 respuesta
afhn

#40 te falta otro Scanner después del

System.out.print(" ¿Quieres continuar? s/n ");

pides una respuesta, pero no estás poniendo un scanner que pille la respuesta.
si mal no estoy viendo xd.

1 respuesta
Yandr0s

#30 quien no haga eso no merece llamarse programador

L

#41
ves bien, lo copie mal, luego edité y me salté esa linea. Lo edito de nuevo, pero ese no es el problema, el problema viene al entrar en el bucle do con intro pulsado, que se salta la linea
key.nextLine();
y no se como evitarlo.

Gracias por responder.
Saludos.

L

Bueno, ya encontré la solucion, me respondo a mi mismo por si a alguien le pudiera interesar.

http://puntocomnoesunlenguaje.blogspot.com.es/2012/08/java-scanner.html?m=1

Cuado en un programa se leen por teclado datos numéricos y datos de tipo carácter o String debemos tener en cuenta que al introducir los datos y pulsar intro estamos también introduciendo en el buffer de entrada el intro.
Es decir, cuando en un programa introducimos un datos y pulsamos el intro como final de entrada, el carácter intro también pasa al buffer de entrada.
Buffer de entrada si se introduce un 5: 5\n
En esta situación, la instrucción:

n = sc.nextInt();

Asigna a n el valor 5 pero el intro permanece en el buffer
Buffer de entrada después de leer el entero: \n

Si ahora se pide que se introduzca por teclado una cadena de caracteres:

System.out.print("Introduzca su nombre: ");

nombre = sc.nextLine(); //leer un String

El método nextLine() extrae del buffer de entrada todos los caracteres hasta llegar a un intro y elimina el intro del buffer.
En este caso asigna una cadena vacía a la variable nombre y limpia el intro. Esto provoca que el programa no funcione correctamente, ya que no se detiene para que se introduzca el nombre.

Solución:

Se debe limpiar el buffer de entrada si se van a leer datos de tipo carácter a continuación de la lectura de datos numéricos.

La forma más sencilla de limpiar el buffer de entrada en Java es ejecutar la instrucción:

sc.nextLine();

Pues la cosa era bien sencilla, solo tengo que añadir un
key.nextLine()
después del
sn= key.next().charAt(0);
al final del bucle, para limpiar el buffer del teclado :)

L

Hola.
Aqui sigo con mis programillas. He hecho otro mastermimd pero esta vez juegas contra la "maquina" por turnos, las pistas se muestran con números, un 1 para las cifras bien colocadas, 2 para las mal colocadas y 0 para las cifras que no están. Se puede seleccionar el número de cifras con las que jugamos, hasta 6 cifras, con 7 mi sistema para descartar números es demasiado lento :/, funciona pero no termina jaja.

Y bueno, aunque no sea gran cosa, por si a alguien le apetece probarlo o echarle un vistazo aquí está el código.

spoiler
spoiler
11 días después
djamb

#30 la mayoría de ide's de java tienen un atajo de teclado que te pone el codestyle que viene por defecto.
#1 si quieres programar para android usa android studio.

1 respuesta
Camperito

#2 Yo tambien los odio, pero mas me odio a mi mismo ya que tengo que seguir la convencion psr3 y me lo tengo que tragar quiera o no

L

#46 ¿Mejor Android Studio que Eclipse?
Ya había decidido probar eclipse, más que nada por que estoy siguiendo un curso en Youtube en el que usan Eclipse y me gusta lo que veo. He estado mirando opiniones y la verdad hay para todos los gustos, supongo que no habrá mucha diferencia.
En realidad no es que quiera programar para Android, mi única pretensión es entretenerme, y bueno, me gustaba, antes de dejarlo, la programación gráfica, en su día hice mis pinitos con OpenGL, tengo un vídeo por Youtube, si pudiera hacer algo así para Android...

https://youtu.be/86gT7YlnVHU

2 respuestas
7 días después
B

#48 Eclipse es la mayor bullshit que existe en IDEs. Y si no me crees, vete a instalarte todo lo que te traen otros en eclipse :)

1 respuesta
djamb

#48 yo trabajo con opengl en android y se pueden hacer exactamente lo mismo, cambian un poco los render y los shaders son iguales. Eclipse lo usa muy poca gente a nivel profesional y casi todos son chinos por el tema que tiene google en china y los servicios que tira jetbrain de google

Ranthas

#49 Desde q me pase a intellij idea no vuelvo a tocar el Eclipse ni con un palo.

Los mejores 200 pavos invertidos de mi vida

2
Wei-Yu

Si está aprendiendo como si usa blueJ, dejad de darle la lata a gente recién empezada con vuestras preferencias personales.

L

Pues si la alternativa a Eclipse es gastarse 200 pavos lo tengo bastante claro...

Yo no soy ni profesional ni pretendo serlo, si puedo hacer un arkanoid, un buscaminas o un cubo rotando en 3D en mi telefono ya me doy por satisfecho, para mi esto es solo entretenimiento.

Wei-Yu

Intellij idea tiene versión de comunidad que sale gratis. Para cacharrear todavía te sobran muchas cosas de las que te traerá, si quieres la versión pro es la que tienes que poner pasta (o conseguir licencia de estudiante). Ahí ya tiene cosillas más "interesantes"; que si bases de datos, servicios web, herramientas varias para analizar y controlar el código...

Si estás haciendo cosas pequeñas lo único que te interesa es que tenga buen autocompletar y autoimport, para que puedas importar arraylist sin dejarte los dedos escribiendo, un linter para que te marque los errores estáticos antes de compilar (como int asignar un valor int a una variable string). Además de eso hay cosas que están bien, como el ir a definición/uso/implementación/declaración o los ctags, entre otras muchas cosas.

Ya te digo que para empezar te vale cualquier cosa, y tampoco es que aprendas "eclipse" o "visual studio"; eso sólo es una interfaz gráfica con funcionalidades parecidas, así que en cualquier momento puedes cambiar de IDE si te apetece.

1 respuesta
L

#54
Gracias por los consejos, a ver si puedo ir probandolos todos, así salgo de dudas, pero no creo que vaya a tener problemas con ninguno de ellos, si todavía me apaño con el javaNIDE...

Saludos.

L

Aqui sigo aprendiendo cosillas.

Estoy mirando cosas sobre como y el porqué de las clases, había usado clases mas veces pero no tenía el tema del todo claro. He aprendido conceptos como encapsulación y he usado por primera vez un constructor de clase.

He creado una clase para manejar archivos de texto, en este caso para hacer una agenda, se puede cargar un archivo existente o crear uno nuevo, en el podemos añadir, buscar, borrar o ver contactos. He encontrado un método molón de la clase Arrays, que es el método sort, para ordenar Arrays que me ha ahorrado mucho trabajo.

Saludos.

spoiler
spoiler
spoiler

Pd: Cualquier consejo es bien recibido.

L

Buenas.

Estoy mirando el tema de la herencia de clases, polimorfismo, sobrecarga de constructores... Estoy pensando en un proyecto para aplicar a lo que estoy aprendiendo y se me ha ocurrido algo que podría aplicar a mi trabajo, la carpintería.

La idea es hacer un programa que a partir de unas datos guardados en un txt, coma Alto, Ancho, Fondo, Grueso, etc, me cree otro txt con el despiece de un armario empotrado que podría imprimir.

El caso es que no estoy seguro como debo estructurarlo.

Mi idea es hacer una clase pieza, que tendría alto, ancho y grueso, una clase módulo que tendría varias piezas y una clase armario que tendría varios módulos,
luego una clase armario _corredera que heredaría de armario y otra clase armario _abatible que también heredaría de armario. Tanto la clase armario_abatible como la clase armario_corredera tendrían medidas y datos de las puertas.

Lo que no tengo claro es si armario heredaría de módulo y módulo de pieza.

Yo, en su día hice cosillas con Objetos 3D. En C había una función, struct creo recordar, para hacer estructuras de datos, así para guardar un objeto 3D necesitabas un vértice, que tenía coordenadas x, y ,z, un polígono, con varios vértices, y finalmente el objeto 3D tenía varios polígonos.

Por lo que yo entiendo con una clase podría hacer lo mismo que la función struct de C ya que una clase puede tener solo datos y un armario sería como un objeto 3D.

No se si voy bien encaminado...

Otro tema tema ya, es lo de crear el archivo txt con el despiece a partir de datos que tengo que leer de otro txt pero eso creo tenerlo "claro".

Pues nada más, no se como veis la idea, si a alguien le apetece darme algún consejo...

Saludos.

Usuarios habituales