elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 27
21  Programación / Java / Re: [Android] Comprobar nuevos mensajes en servicio web en: 28 Marzo 2014, 13:12 pm
Dependiendo de la actividad que tenga el server, tardará un poco. Supongo que en tu servidor al enviar sms lo haces desde un # propio, por ejemplo, todas esas API demoran un poco en llegarte el sms por que tienen que revisar el sms, etc. Lo que puedes hacer es hacer un webservice que reciban la petición e inmediatamente envíe el sms (para ésto tienes que usar una API igualmente, para poder asociar tu aplicación con el envío de sms). WebSockets no creo que te sirva mucho porque no habrá una comunicación constante (¿o si?).

Salu2.
22  Programación / Java / Re: Ayuda ServidorAVL en: 27 Marzo 2014, 19:23 pm
Ya sé que estás desesperado pero eso no sirve como dato. ¿El servidor es potente? ¿Cada conexión se hace un un hilo independiente para garantizar que no haya cuello de botella? ¿Utilizas un pool de conexiones?

Salu2.
23  Programación / Java / Re: Ayuda ServidorAVL en: 27 Marzo 2014, 15:38 pm
¿Tu aplicación es Multithreading? Si no es así, ésto puede ser la causa del problema. Si no usas Multithreading al cabo de una cantidad de conexiones se generará un cuello de botella que traerá consigo la caída del server.

Aquí tienes un buen turorial sobre hacer tu aplicación Multithreading: Concurrencia en Java 7
24  Programación / Java / Re: SetText JavaFX no funciona en: 26 Marzo 2014, 22:18 pm
Los Controladores en JavaFX son exclusivos para una sola clase. Es decir, cuando le indicas qué clase quieres que sea el controlador:

Código
  1. fx:controller="paquete.clase"

Estás diciendo que esa clase contralará tu GUI. La clase RXTX contiene un TextField marcado como control FXML pero si te das cuenta está declarado en dicha clase, por lo que el TextField del controller y este TextField son distintos, acá no hay referencia. Por eso te da el NullPointerException, como ese TextField no corresponde a ningún controller, no se ha inicializado y por lo tanto vale null.

Puedes pasárselo por referencia a la clase RXTX por un constructor para que dicha clase haga uso del TextField, o por medio de un setter.

Código
  1. public class RXTX implements SerialPortEventListener{
  2.  
  3.   private TextField carlos;
  4.  
  5.  public RXTX(TextField carlos) { this.carlos = carlos; }


Salu2.
25  Programación / Java / Re: [JAVA] Ejercicio Java , no se por donde cogerlo en: 26 Marzo 2014, 15:22 pm
Te salen errores en primera porque olvidé colocar el tipo de retorno al método (ya se lo puse, mira el nuevo código). Además, como eres nuevo intuyo que no sabes aún los conceptos de POO. No te preocupes, todo con calma, paso por paso. Es mejor para tí si haces todo en el main (programación estructurada) ,luego te darás cuenta que ésto no es lo óptimo ya que tendrás el determinado "código spaghetti".

Te sugiero que antes de empezar a realizar ejercicios en un lenguaje, primero estudies el lenguaje. Si no, es como tratar de desarrollar un problema de geometría sin haberla estudiado antes.

Código
  1. public static void main (String[] args) {
  2. Scanner read = new Scanner(System.in);
  3. System.out.println("Ingresa un numero:");
  4. int num = read.nextInt();
  5. int numero = factorial(num);
  6.  
  7. String digitos = String.valueOf(numero); // convierte el numero a string
  8. String temp = digitos; // copia el string para recorrer el for
  9. List<Character> digitosAscii = new ArrayList<>(); // almacena los caracteres ascii
  10. // temp.length()/2 porque se toman los numeros en pareja
  11. for(byte i=0; i<temp.length()/2; i++) {
  12. int digito; // almacena el digito a guardar en ascii
  13. if(digitos.length() >= 2) {
  14. int inicio = digitos.length() -2; // inicio = cantidad de digitos del numero - 2
  15. int finalx = digitos.length(); // final = cantidad de digitos del numero
  16. // obtiene la ultima pareja (derecha) de los digitos
  17. digito = Integer.valueOf(digitos.substring(inicio,finalx));
  18. // elimina la pareja que se ha tomado de los digitos
  19. digitos = digitos.substring(0,finalx-2);
  20. }
  21. else {
  22. // si solo queda un digito lo convierte a entero para convertirlo a ascii
  23. digito = Integer.valueOf(digitos);
  24. }
  25. digitosAscii.add((char) digito); // convierte el digito a ascii lo agrega a la lista
  26. }
  27. // recorre la lista de codigos ascii y los imprime
  28. for(char c : digitosAscii)
  29. System.out.println("Digito:\t"+c);
  30. }

PD: Si tu duda fue disipada, por favor marca el tema como solucionado.
26  Programación / Java / Re: [JAVA] Ejercicio Java , no se por donde cogerlo en: 26 Marzo 2014, 06:33 am
La verdad no te entiendo, pero supongo que quieres que a partir de un numero, se descomponga en parejas de derecha a izquierda, y convierta cada pareja en ascii y su queda un digito unico, lo convierte tambien. Este code te servirá:

Código
  1. public static  void getAsciiPorNumeroEnPares(int numero) {
  2. String digitos = String.valueOf(numero); // convierte el numero a string
  3. String temp = digitos; // copia el string para recorrer el for
  4. List<Character> digitosAscii = new ArrayList<>(); // almacena los caracteres ascii
  5. // temp.length()/2 porque se toman los numeros en pareja
  6. for(byte i=0; i<temp.length()/2; i++) {
  7. int digito; // almacena el digito a guardar en ascii
  8. if(digitos.length() >= 2) {
  9. int inicio = digitos.length() -2; // inicio = cantidad de digitos del numero - 2
  10. int finalx = digitos.length(); // final = cantidad de digitos del numero
  11. // obtiene la ultima pareja (derecha) de los digitos
  12. digito = Integer.valueOf(digitos.substring(inicio,finalx));
  13. // elimina la pareja que se ha tomado de los digitos
  14. digitos = digitos.substring(0,finalx-2);
  15. }
  16. else {
  17. // si solo queda un digito lo convierte a entero para convertirlo a ascii
  18. digito = Integer.valueOf(digitos);
  19. }
  20. digitosAscii.add((char) digito); // convierte el digito a ascii lo agrega a la lista
  21. }
  22. // recorre la lista de codigos ascii y los imprime
  23. for(char c : digitosAscii)
  24. System.out.println("Digito:\t"+c);
  25. }
27  Programación / Java / Re: Array de Objetos y selección aleatoria de los mismos en: 26 Marzo 2014, 03:52 am
No entiendo bien tu pregunta, ¿Quieres generar objetos aleatoriamente o quieres a partir de una lista de objetos elegir dos objetos aleatorios?

Sea como sea, no es difícil. Con la clase java.util.Random como te dijo engelx lo puedes conseguir. Te ejo un ejemplo:

Código
  1. package pe.edu.unp.rol;
  2.  
  3. public abstract class Jugador {
  4.  
  5. private String nombre;
  6. private Double poder;
  7. private Integer vida;
  8.  
  9. public Jugador() {
  10. this("",0d,0);
  11. }
  12.  
  13. public Jugador(String nombre, Double poder, Integer vida) {
  14. this.nombre = nombre;
  15. this.poder = poder;
  16. this.vida = vida;
  17. }
  18.  
  19. public String getNombre() {
  20. return this.nombre;
  21. }
  22.  
  23. public void setNombre(String nombre) {
  24. this.nombre = nombre;
  25. }
  26.  
  27. public Double getPoder() {
  28. return this.poder;
  29. }
  30.  
  31. public void setPoder(Double poder) {
  32. this.poder = poder;
  33. }
  34.  
  35. public Integer getVida() {
  36. return vida;
  37. }
  38.  
  39. public void setVida(Integer vida) {
  40. this.vida = vida;
  41. }
  42.  
  43.  
  44. }

Código
  1. package pe.edu.unp.rol;
  2.  
  3. public class Soldado extends Jugador {
  4.  
  5. public Soldado() {
  6. super();
  7. }
  8.  
  9. public Soldado(String nombre, Double poder, Integer vida) {
  10. super(nombre,poder,vida);
  11. }
  12.  
  13. }

Código
  1. package pe.edu.unp.rol;
  2.  
  3. public class Campesino extends Jugador {
  4.  
  5. public Campesino() {
  6. super();
  7. }
  8.  
  9. public Campesino(String nombre, Double poder, Integer vida) {
  10. super(nombre,poder,vida);
  11. }
  12.  
  13.  
  14. }

Código
  1. package pe.edu.unp.rol;
  2.  
  3. public class Mago extends Jugador {
  4.  
  5. private Double magia;
  6.  
  7. public Mago() {
  8. super();
  9. }
  10.  
  11. public Mago(String nombre, Double poder, Integer vida, Double magia) {
  12. super(nombre,poder,vida);
  13. this.magia = magia;
  14. }
  15.  
  16. public Double getMagia() {
  17. return magia;
  18. }
  19.  
  20. public void setMagia(Double magia) {
  21. this.magia = magia;
  22. }
  23. }

Código
  1. package pe.edu.unp.rol;
  2.  
  3. public class Obrero extends Jugador {
  4.  
  5. public Obrero() {
  6. super();
  7. }
  8.  
  9. public Obrero(String nombre, Double poder, Integer vida) {
  10. super(nombre,poder,vida);
  11. }
  12.  
  13.  
  14. }



Código
  1. import java.lang.reflect.InvocationTargetException;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.Random;
  5.  
  6. public class Test {
  7.  
  8. private final static String paquete = "pe.edu.unp.rol."; // nombre del paquete que contiene las clases
  9.  
  10. /**
  11. * Este metodo genera en tiempo de ejecuci&#243;n instancias de 4 clases distintas, con nombres aleatorios
  12. * y sus propiedades poder, vida y en caso la instancia sea tipo 'Mago', agrega la magia, todos aleatorios.
  13. *
  14. * @return List<Jugador>
  15. * @throws InstantiationException
  16. * @throws IllegalAccessException
  17. * @throws IllegalArgumentException
  18. * @throws InvocationTargetException
  19. * @throws NoSuchMethodException
  20. * @throws SecurityException
  21. * @throws ClassNotFoundException
  22. */
  23. public List<Jugador> getJugadores() throws InstantiationException, IllegalAccessException, IllegalArgumentException,
  24. List<Jugador> listaObjetos = new ArrayList<>(); // lista que almacenara las instancias de las clases
  25. String[] clases = {"Soldado","Campesino","Mago","Obrero"};
  26. String[] nombres = {"Halz","Orion","Violetus","Orks","Kalz","Pivot","Nerth","Seth","Vandal"};
  27.  
  28. int numeroObjetosAzar = new Random().nextInt(50)+1; // se crearan maximo 50 instancias con los 4 tipos de clases
  29.  
  30. for(byte i=0; i<numeroObjetosAzar; i++) {
  31. // valores aleatorios que se setearan a las instancias
  32. String claseAleatoria = clases[ (1 + new Random().nextInt(3)) ];
  33. String nombreAleatorio = nombres[ (1 + new Random().nextInt(8)) ];
  34. Double poderAleatorio = Math.floor(1 + Math.random() * 100);
  35. Double magiaAleatoria = Math.floor(1 + Math.random() * 100);
  36. Integer vidaAleatoria = 1 + new Random().nextInt(100);
  37.  
  38. /** de acuerdo a la clase, obtenemos una instancia de acuerdo a la clase que especificamos
  39. por medio de 'Class.forName(clase)' seguido de 'getConstructor()' que obtiene el
  40. constructor de dicha clase y le pasamos los parametros.
  41. Esto se puede hacer perfectamente con el operador new Clase(parametros). La diferencia
  42. es que Class.forName() se usa cuando no se sabe que clase instanciar si no hasta cuando
  43. las circunstancias en tiempo de ejecucion lo determine. new lo usamos cuando sabemos de
  44. antemano que clase instanciar.*/
  45. switch(claseAleatoria) {
  46. case "Soldado": listaObjetos.add((Soldado)Class.forName(paquete+claseAleatoria)
  47. .getConstructor(String.class,Double.class,Integer.class).newInstance(nombreAleatorio,poderAleatorio,vidaAleatoria));
  48. break;
  49. case "Campesino": listaObjetos.add((Campesino)Class.forName(paquete+claseAleatoria)
  50. .getConstructor(String.class,Double.class,Integer.class).newInstance(nombreAleatorio,poderAleatorio,vidaAleatoria));
  51. break;
  52. case "Mago": listaObjetos.add((Mago)Class.forName(paquete+claseAleatoria)
  53. .getConstructor(String.class,Double.class,Integer.class,Double.class).newInstance(nombreAleatorio,poderAleatorio,vidaAleatoria,magiaAleatoria));
  54. break;
  55. default : listaObjetos.add((Obrero)Class.forName(paquete+claseAleatoria)
  56. .getConstructor(String.class,Double.class,Integer.class).newInstance(nombreAleatorio,poderAleatorio,vidaAleatoria));
  57. }
  58. }
  59.  
  60.  
  61. return listaObjetos;
  62. }
  63.  
  64. public static void main(String[] args) {
  65. Test test = new Test();
  66.  
  67. /**
  68. *  Ejemplo de recorrido. Generalizamos con 'Jugador' porque todas sus subclases:
  69. * Soldado, Campesino, Mago y Obrero al heredar de Jugador son tambien un Jugador.
  70. * Recuerda que la herencia es una relacion es un. El operador 'instaceof' es util
  71. * para saber si una objeto es de una clase dada: objeto instaceof clase. Esto
  72. * retorna true si es el objeto es una instancia de la clase o false si no lo es.
  73. */
  74. try {
  75. for(Jugador e : test.getJugadores()) {
  76. System.out.println("Tipo:\t"+e.getClass().getSimpleName());
  77. System.out.println("Nombre:\t"+e.getNombre());
  78. System.out.println("Poder:\t"+e.getPoder());
  79. System.out.println("Vida:\t"+e.getVida());
  80. if(e.getClass().getSimpleName().equals("Mago")) {
  81. Mago mago = (Mago) e;
  82. System.out.println("Magia:\t"+mago.getMagia());
  83. }
  84.  
  85. }
  86. e.printStackTrace();
  87. System.err.println(e.getLocalizedMessage());
  88. }
  89.  
  90.  
  91. }
28  Programación / Java / Re: Arreglo de java en: 24 Marzo 2014, 22:31 pm
Eso pasa porque todo lo haces dentro del loop. Acostúmbrate a usar banderas, ésto no es más que una variable (normalmente booleana) que actúa como un informante. Si ocurre un determinado caso, la bandera va a guardar un valor, por ejemplo true, ésto dentro del loop.

Luego, fuera del loop analizas la bandera, si es true haces algo, si no, haces otra cosa.

Código
  1. public static void main(String[] args) {
  2. //launch(args);
  3. int[] array = {0,1,2,3,4,5,6,7,8,9,10};
  4. int numero = Integer.valueOf(javax.swing.JOptionPane.showInputDialog("Ingrese el numero a buscar"));
  5. boolean encontrado = false; // bandera que informa si se ha encontrado el numero
  6. int posicion = 0; // posicion del numero si se encuentra
  7. for(short i=0; i<array.length; i++) {
  8. if(numero == array[i]) {
  9. encontrado = true; // informa que se encontro el numero en
  10. posicion = i; // esta posicion
  11. }
  12. }
  13. // verifica el valor de 'encontrado' que sera true si se ha encontrado
  14. // el numero, de lo contrario sera false.
  15. if(encontrado)
  16. System.out.println("Numero encontrado en la posicion:\t"+posicion);
  17. else
  18. System.out.println("Numero no encontrado.");
  19. System.exit(0); // termina el programa
  20. }
29  Programación / Java / Re: Arreglo de java en: 24 Marzo 2014, 21:14 pm
Éste es tu error, estás colocando punto y coma luego del for. Si colocas un punto y coma seguido de un loop (menos do-while) significa que ese loop es un loop vacío y el compilador lo ignora.

Código
  1. for(int indice=0; indice<=arreglo.length; indice++);

Por lo que if, en realidad no está dentro de ningún loop, y la variable 'indice' no existe, ya que solo existe dentro del loop. Solo puedes usar break cuando estás dentro de un loop.
30  Programación / Java / Re: Arreglo de java en: 24 Marzo 2014, 20:32 pm
Me equivoqué con el nombre del array nada más. Verifica nuevamente el código que puse.
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 27
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines