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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 40
21  Programación / Java / dudas con arreglos en: 17 Febrero 2015, 03:50 am
Saludos

Tengo una duda sobre el manejo de arreglos

Yo tengo una clase en la que tengo declarado como atributo una variable global array de tipo byte[] de tamaño 50. y en esa clase también tengo un metodo que se llama send() y al cual desde el main con un ciclo le voy a ir pasando arreglos de distintos tamaños y se los voy a tener que concatenar a ese arreglo global, byte[]. con cada llamada a send().

Código
  1. class Nucleo{
  2. static byte[] buffer = new byte[50];
  3. public void send(byte[] mensaje){
  4. for(int i = 0;i < mensaje.length;i++)
  5. {
  6.    buffer[i] = mensaje[i];
  7. }
  8. }
  9. }
  10. }

en este codigo le paso un mensaje que es un array de bytes y se lo concateno a buffer. Pero el problema es que el codigo solo funcionaría la primera vez que llamo a send(), y las demas veces ya no lo podria concatenar. ¿cómo podría resolver esto?

de antemano gracias
22  Programación / Java / Re: Dudas sobre hilos en: 15 Febrero 2015, 01:53 am
Saludos Nac-ho, tienes razon, necesito practicas más. Esta es mi primer practica en la que uso hilos y es por eso que me pierdo. Ya estuve leyendo sobre el metodo wait() y el notify() junto con synchronized. El wait creo que funciona correctamente, pero el notify que es el que me desbloquea el hilo no me reanuda la impresion, qué estoy haciendo mal?

Código
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. import java.util.concurrent.atomic.AtomicBoolean;
  5.  
  6. class Hilo extends Thread{
  7. private int cuenta = 0;
  8. private long pausa;
  9. private boolean puedeImprimir = true;
  10. private JTextArea areaTexto;
  11.  
  12. Hilo(long milisegundos,JTextArea cuadroTexto){
  13. pausa = milisegundos;
  14.    areaTexto = cuadroTexto;
  15. }
  16.  
  17. public void ocurrioBotonazo(){
  18.    if(puedeImprimir)
  19.    {
  20.        this.puedeImprimir = false;
  21.        suspender(this);
  22.    }
  23.    else
  24.    {
  25.     this.puedeImprimir = true;
  26.     reanudar(this);
  27.    }
  28. }
  29.  
  30.  
  31.  
  32. public synchronized void suspender(Hilo hilo)
  33. {
  34. if(hilo.puedeImprimir == false)
  35. {
  36. try
  37. {
  38. hilo.wait();
  39. }
  40. }
  41. }
  42. }
  43.  
  44. public synchronized void reanudar(Hilo hilo)
  45. {
  46. if(hilo.puedeImprimir)
  47.   hilo.notify();
  48. }
  49.  
  50. public void run()
  51. {
  52. while(this.puedeImprimir)
  53. {
  54. try
  55. {
  56. this.imprimirContador();
  57. Thread.sleep(pausa);
  58. this.cuenta++;
  59. }
  60. {
  61. e.printStackTrace();
  62. }
  63. }
  64. }
  65.  
  66. public void imprimirContador(){
  67. String tiempo;
  68.    tiempo = Integer.toString(cuenta);
  69.    areaTexto.setText(tiempo);
  70. }
  71. }
  72.  
  73. class Interfaz extends JFrame implements ActionListener{
  74. private JTextArea areaTexto,areaTexto2;
  75. private JButton boton;
  76. private Hilo hilo,hiloEvento;
  77.  
  78. Interfaz()
  79. {
  80. areaTexto = new JTextArea(10,7);
  81. areaTexto2 = new JTextArea(10,7);
  82. hilo = new Hilo(2000,areaTexto);
  83. hiloEvento = new Hilo(1000,areaTexto2);
  84. boton = new JButton("Pausar/Reanudar");
  85. this.getContentPane().add(boton,BorderLayout.SOUTH);
  86. this.getContentPane().add(areaTexto,BorderLayout.WEST);
  87. this.getContentPane().add(areaTexto2,BorderLayout.EAST);
  88.  
  89. hilo.start();
  90.        hiloEvento.start();
  91.  
  92. boton.addActionListener(this);
  93. }
  94.  
  95. public void actionPerformed(ActionEvent event)
  96. {
  97.     hiloEvento.ocurrioBotonazo();
  98. }
  99. }
  100.  
  101.  
  102. public class MensajesHilos {
  103.  
  104. public static void main(String[] args){
  105. Interfaz interfaz = new Interfaz();
  106. interfaz.setTitle("Hilos de Control");
  107. interfaz.setBounds(200, 200, 300, 240);
  108. interfaz.setVisible(true);
  109. }
  110. }
  111.  

en la función de ocurrioBotonazo, en la parte donde dice que puedeImprimir es verdadero otra vez ( o sea que hubo un 2do botonazo) lo mando a reanudar() y el notify no me lo cacha
23  Programación / Java / Re: Dudas sobre hilos en: 14 Febrero 2015, 02:09 am
muchas gracias Nac-ho, funciona perfectamente. No se por qué se me complicó algo tan simple. Una última duda si después de que de el primer botonazo(con la respectiva suspensión) yo quiero reanudar la impresión con otro botonazo, ¿cuál sería la mejor opción???

24  Programación / Java / Re: Dudas sobre hilos en: 14 Febrero 2015, 00:58 am
muchas gracias por sus respuestas, creo que no me explique muy bien porque de hecho yo tampoco entendía completamente las especificaciones para el código.

Espero poderme explicar mejor esta vez. Yo tengo una interfaz gráfica en la que tengo 2 areas de texto y un boton. En cada area de texto me va a imprimir el contador de un hilo(como son dos areas de texto son 2 hilos). El contador de ambos inicia desde 0. Uno de  los hilos va impriendo el contador cada segundo y el otro cada 2 segundos.

Después voy a elegir uno de los hilos(el que sea), y ese hilo lo voy a asociar con el boton de la interfaz. Cuando yo oprima el boton va a ocurrir un evento boton, en el cual se tiene que parar la ejecución de ese hilo solamente, (el otro seguira imprimiendo como si nada), esto con el uso de una bandera. Y es ahi donde esta el problema que tengo porque para un hilo la bandera va a tener valor true siempre, pero en el otro hilo cuando tenga un botonazo la bandera va a ser false, indicando que pare

Código
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4.  
  5.  
  6. class Hilo extends Thread{
  7. private int cuenta = 0;
  8. private long pausa;
  9. private boolean puedeImprimir = true;
  10. private JTextArea areaTexto;
  11.  
  12. Hilo(long milisegundos,JTextArea cuadroTexto){
  13. pausa = milisegundos;
  14.    areaTexto = cuadroTexto;
  15. }
  16.  
  17. public void run()
  18. {
  19. while(puedeImprimir)
  20. {
  21. try
  22. {
  23. imprimirContador();
  24. sleep(pausa);
  25. cuenta++;
  26. }
  27. {
  28. e.printStackTrace();
  29. }
  30. }
  31. }
  32.  
  33. public void imprimirContador() {
  34. String tiempo;
  35.    tiempo = Integer.toString(cuenta);
  36.    areaTexto.setText(tiempo);
  37. }
  38. }
  39.  
  40. class Interfaz extends JFrame implements ActionListener{
  41. private JTextArea areaTexto,areaTexto2;
  42. private JButton boton;
  43. private Hilo hilo,hiloEvento;
  44.  
  45. Interfaz()
  46. {
  47. areaTexto = new JTextArea(10,7);
  48. areaTexto2 = new JTextArea(10,7);
  49. hilo = new Hilo(2000,areaTexto);
  50. hiloEvento = new Hilo(1000,areaTexto2);
  51. boton = new JButton("Ejecutar");
  52. this.getContentPane().add(boton,BorderLayout.SOUTH);
  53. this.getContentPane().add(areaTexto,BorderLayout.WEST);
  54. this.getContentPane().add(areaTexto2,BorderLayout.EAST);
  55.  
  56.        hilo.start();
  57.        hiloEvento.start();
  58.  
  59. boton.addActionListener(this);
  60. }
  61.  
  62. public void actionPerformed(ActionEvent event)
  63. {
  64.     ????????????????????
  65. }
  66. }
  67.  
  68. public class MensajesHilos {
  69.  
  70. public static void main(String[] args){
  71. Interfaz interfaz = new Interfaz();
  72. interfaz.setTitle("Hilos de Control");
  73. interfaz.setBounds(200, 200, 300, 240);
  74. interfaz.setVisible(true);
  75. }
  76. }
  77.  

lo que quiero es tener una variable booleana en la que su valor en un hilo sea siempre true,y en el otro se haga false cuando haya un botonazo
25  Programación / Java / Dudas sobre hilos en: 12 Febrero 2015, 04:53 am
Saludos tengo el siguiente código que trata sobre construir una aplicación basada en hilos que contemple la ejecución de un hilo evento y su interacción con un hilo Thread.

Para realizar la aplicación tengo que cumplir con los siguientes requerimientos:

1. Ambos hilos impriman un contador en áreas de texto particulares.
2. Un hilo imprima cada segundo y el otro cada 2 segundos.
3. Incluir un botón para asociarlo en tiempo compilación a uno cualquiera de los hilos.
4. Al presionar el botón, que el hilo correspondiente suspenda su ejecución.
5. El hilo reanude su ejecución tras otro botonazo con el mismo botón que el punto anterior.
6. La suspensión del hilo conlleve a suspender los efectos del hilo
 sobre su correspondiente área de texto.
7. El evento del botonazo, provoque el paso de solo un mensaje al objeto hilo, indicándole
   solo que ha ocurrido un botonazo, por lo que el método a invocar no deberá recibir
 parámetro.

y el codigo es el siguiente:

Código
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4.  
  5. class Hilo extends Thread{
  6. private int cuenta;
  7. private long segundos;
  8. private boolean imprime;
  9.  
  10. Hilo(int seg,int contador){
  11. cuenta = contador;
  12. segundos = seg;
  13. imprime = true;
  14. }
  15.  
  16. public void run()
  17. {
  18. while(imprime)
  19. {
  20. System.out.println(""+cuenta);
  21. cuenta++;
  22. }
  23. }
  24. }
  25.  
  26. class Interfaz extends JFrame implements ActionListener{
  27. private JTextArea areaTexto1,areaTexto2;
  28. private JButton boton;
  29. private JPanel ventana;
  30. private Hilo hilo1,hilo2;
  31.  
  32. Interfaz()
  33. {
  34. areaTexto1 = new JTextArea(10,10);
  35. areaTexto2 = new JTextArea(10,10);
  36. boton = new JButton("Ejecutar");
  37. ventana = new JPanel(new BorderLayout());
  38. ventana.add("South",areaTexto1);
  39. ventana.add("North",areaTexto2);
  40. hilo1 = new Hilo(1000,0);
  41. hilo2 = new Hilo(2000,0);
  42.        this.add(ventana);
  43.  
  44. boton.addActionListener(this);
  45. }
  46.  
  47. public void actionPerformed(ActionEvent evento)
  48. {
  49.     hilo1.start();
  50.     //hilo1.sleep(seg);
  51. }
  52. }
  53.  
  54.  
  55. public class MensajesHilos {
  56.  
  57. public static void main(String[] args) {
  58. Interfaz interfaz = new Interfaz();
  59. interfaz.setTitle("Manejo de Hilos");
  60. interfaz.setBounds(200, 200, 400, 400);
  61. interfaz.setVisible(true);
  62. }
  63. }
  64.  

El problema que tengo es que en el método run() que es el que ejecuta el hilo, no se como hacerle para asignarle un area de texto para que imprima en ella, porque el area de texto la tengo declarada en la clase de interfaz, y en el actionPerformed de la clase interfaz, que es la que me dice que acción ejecutar con el evento botonazo, pero no tengo muy claro para hacer que en el primer botonazo pare el hilo, que al segundo reanude la ejecución y asi sucesivamente

de antemano gracias
26  Programación / Java / duda con eventos de boton en: 8 Febrero 2015, 03:24 am
Saludos

Tengo el siguiente código, que es una pequeña interfaz gráfica, que consta de un botón, un campo de texto y un área de texto. Esto es la parte fácil, el problema que tengo es que tengo que crear un evento de botón con un Listener. Tras dar clic al botón el contenido del campo de texto se copie hacia el area de texto, y que esta area de texto sea del tamaño suficiente para visualizar 40 columnas y 20 filas

El código que es el siguiente:

Código
  1. import java.awt.*;
  2. import java.awt.Color;
  3. import java.awt.event.*;
  4. import javax.swing.*;
  5.  
  6. class ComponentesGraficos extends JFrame implements ActionListener{
  7. private JButton boton;
  8. private JTextField campoTexto;
  9. private JTextArea areaTexto;
  10.  
  11. public ComponentesGraficos(){
  12. boton = new JButton("Agregar");
  13. campoTexto = new JTextField();
  14. areaTexto = new JTextArea();
  15.  
  16. boton.setBackground(Color.GREEN);
  17. this.getContentPane().add(boton,BorderLayout.SOUTH);
  18. this.getContentPane().add(campoTexto,BorderLayout.NORTH);
  19. this.getContentPane().add(areaTexto,BorderLayout.CENTER);
  20.  
  21. boton.addActionListener(this);
  22. }
  23.  
  24. public void actionPerformed(ActionEvent evento)
  25. {
  26. ??????
  27. }
  28. }
  29.  
  30. public class InterfazGrafica {
  31. final static int COORDENADA_X = 10;
  32. final static int COORDENADA_Y = 10;
  33. final static int ANCHURA = 200;
  34. final static int ALTURA = 200;
  35.  
  36. public static void main(String[] args) {
  37. ComponentesGraficos interfaz = new ComponentesGraficos();
  38. interfaz.setBounds(COORDENADA_X,COORDENADA_Y,ANCHURA,ALTURA);
  39. interfaz.setVisible(true);
  40. }
  41. }
  42.  

alguna idea de como hacer el evento de boton???

de antemano gracias
27  Programación / Java / HashMap en: 3 Febrero 2015, 01:52 am
Saludos

Tengo el siguiente codigo que se trata de implementar una clase administradora de objetos que utiliza un HashMap. Para esto tengo una clase administradora en la que tengo tres métodos, uno para agregar una tupla, otro para obtener una tupla y otro para eliminar una tupla. El programa me tiene que imprimir algo como:

1         |    CC317    | matematicas   
.....
.....

Pero ahora tengo que crear un método que devuelva una cadena con todas las tuplas de la tabla, no importa que sea en desorden. considerando que es posible que se hayan eliminado tuplas. Para eso tengo que usar un método de la HashMap que me devuelva una enumeration o un Iterator con las llaves existentes.

Código
  1. import java.util.*;
  2.  
  3. class claseAdministradora
  4. {
  5. private HashMap<Integer, Materia> registro = new HashMap<Integer, Materia>();
  6. private int id_secuencial = 1;
  7.  
  8. public int agregaTupla(String clave,String nombre)
  9. {
  10. Materia materia = new Materia(clave,nombre);
  11. registro.put(id_secuencial,materia);
  12. id_secuencial++;
  13. return id_secuencial;
  14. }
  15.  
  16. public Materia obtenerTupla(int id)
  17. {
  18. Materia materia;
  19. materia = registro.get(id);
  20. return materia;
  21. }
  22.  
  23. public void eliminarTupla(int id)
  24. {
  25. registro.remove(id);
  26. }
  27.  
  28. public String imprimirTupla()
  29. {
  30. Iterator<String> tabla = registro.entrySet().iterator();
  31. return "";
  32. }
  33. }
  34.  
  35. class Materia{
  36. public String clave_materia;
  37. public String nombre_materia;
  38.  
  39. Materia(String clave,String nombre_materia)
  40. {
  41. this.clave_materia = clave;
  42. this.nombre_materia = nombre_materia;
  43. }
  44. }
  45.  
  46. public class tablaHash {
  47.  
  48. public static void main(String[] args) {
  49. claseAdministradora tupla = new claseAdministradora();
  50. tupla.agregaTupla("CC317","matematicas");
  51. tupla.agregaTupla("CC320","español");
  52. tupla.agregaTupla("CC415","fisica");
  53. tupla.eliminarTupla(1);
  54. }
  55.  
  56. }
  57.  

el problema es que no se como implementar la función que me imprima todas las tuplas

alguna sugerencia?? de antemano gracias
28  Programación / Java / problema con sobre escritura de métodos en: 24 Enero 2015, 03:15 am
Saludos

Tengo el siguiente código en el cuál tengo que declarar una variable  que puede ser de tipo int, byte o short, a esta variable le voy a asignar un numero en notacion hexadecimal, y después tengo una función llamada memoriaRAM() que lo va a convertir en binario. Yo en el código no tengo uno sino 3 métodos memoriaRAM() a uno le paso como parametros el valor cuando es tipo int, a otro cuando es short, y al ultimo cuando es de tipo byte.

Código
  1. public class OperadoresBits
  2. {
  3. public static void main(String[] args)
  4. {
  5. int valor = 0x80;
  6. short x = 0x80;
  7. byte y = 0x80;
  8. System.out.println("Bits en la RAM\n");
  9. memoriaRAM(valor);
  10. }
  11.  
  12. public static void memoriaRAM(byte valor)
  13. {
  14. int i,bits;
  15. bits = 8;
  16. char binario[] = new char[bits];
  17. System.out.println("Pasando el valor byte " + valor + ":");
  18. for(i = bits-1;i >= 0;i--)
  19. {
  20. if((valor&1) == 1)
  21.   binario[i] = '1';
  22. else if((valor&1) == 0)
  23.   binario[i] = '0';
  24. valor >>= 1;
  25. }
  26. imprimirArreglo(binario);
  27. }
  28.  
  29. public static void memoriaRAM(int valor)
  30. {
  31. int i,bits;
  32. bits = 32;
  33. char binario[] = new char[bits];
  34. System.out.println("Pasando el valor int " + valor + ":");
  35. for(i = bits-1;i >= 0;i--)
  36. {
  37. if((valor&1) == 1)
  38.   binario[i] = '1';
  39. else if((valor&1) == 0)
  40.   binario[i] = '0';
  41. valor >>= 1;
  42. }
  43. imprimirArreglo(binario);
  44. }
  45.  
  46. public static void memoriaRAM(short valor)
  47. {
  48. int i,bits;
  49. bits = 16;
  50. char binario[] = new char[bits];
  51. System.out.println("Pasando el valor short " + valor + ":");
  52. for(i = bits-1;i >= 0;i--)
  53. {
  54. if((valor&1) == 1)
  55.   binario[i] = '1';
  56. else if((valor&1) == 0)
  57.   binario[i] = '0';
  58. valor >>= 1;
  59. }
  60. imprimirArreglo(binario);
  61. }
  62.  
  63. public static void imprimirArreglo(char binario[]){
  64. int bits = 0,i;
  65. final int BITS = 8;
  66. for(i = 0;i < binario.length;i++)
  67. {
  68.    System.out.print(""+binario[i]);
  69.    bits++;
  70.    if(bits == BITS)
  71.    {
  72.     System.out.print(" | ");
  73.     bits = 0;
  74.    }
  75. }
  76. }
  77. }
  78.  

estoy probando el programa cuando a la variable le asigno el valor 128, en hexadecimal sería:

valor = 0x80

para el tipo int y short funciona perfecto e imprime el binario correctamente, pero para el byte desde el momento en que le asigno el valor 0x80 a la variable valor, me marca un error y no entiendo por qué no puedo hacer esto:

byte valor = 0x80;

de antemano gracias





29  Programación / Java / duda con toHexString() en: 23 Enero 2015, 16:24 pm
Saludos

Tengo una variable tipo double e inicializada con el valor 250.25, ahora quiero convertirla a hexadecimal con ayuda de algun método, como por ejemplo:

Código
  1. System.out.println(""+Double.toHexString(valor));

el problema es que al compilar en vez de darme:
 FA.4 que es el equivalente en hexadecimal de 250.25, me da: 0x1.f48p7 y no entiendo a qué se deba esto
30  Programación / Java / numero hexadecimal grande en: 20 Enero 2015, 01:33 am
Saludos

Tengo en el main de mi código una variable de tipo int a la cual le tengo que asignar un valor muy largo: -2147483648 y después pasarlo a hexadecimal con la siguiente función:

Integer.valueOf(String.valueOf(n),16); siendo n el número negativo

El problema es que me aparece el mensaje de error java.lang.NumberFormatException

por qué me sale este error????

de antemano gracias
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 40
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines