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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  AYUDA CON PROGRAMA EN JAVA
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: AYUDA CON PROGRAMA EN JAVA  (Leído 3,037 veces)
RADIACTIVO

Desconectado Desconectado

Mensajes: 20


syscall


Ver Perfil
AYUDA CON PROGRAMA EN JAVA
« en: 15 Octubre 2012, 20:02 pm »

Buenas, soy estudiante de ing. informática y estoy creando un programa que reciba un numero por teclado, y lo transforme a binario y posteriormente a complento a2.
El caso es que, tengo que hacer 2 metodos y devolverlo como String. Hago el paso del integer a binario a traves de un array, pero no se como hacer para que en el main me printee el string  :huh:. Por favor cualquier ayuda será bien recibida, os dejo a continuación el código fuente. Saludos y gracias!

Código:
import java.util.*;

public class integerNumber{



public static void main(String[]args){

Scanner sc = new Scanner(System.in);

System.out.println("Tell me, which number do you want to convert?");

int integerNumber=sc.nextInt();

System.out.println(intToComp2(integerNumber)); //NO ME PRINTEA EL STRING!
}


//METODO QUE PASA DE INTEGER A Comp.A2

public static String intToComp2(int integerNumber){

int i=0;
int[]array;
int j=integerNumber;
int r;
int m=0;
String returneado;

//este bucle calcula la longitud del array
do{
i++;
array=new int[i];

}while((Math.pow(2,i))<=integerNumber);

System.out.println("So I will use " + array.length + " bits");

//este bucle mete en el array el valor del numero en binario
do{
r=j%2;
j=j/2;
array[m]=r;
if(j/2==1){
array[i-1]=1;
}
m++;
}while(j>1);

//esto printea el binario

for(int h=m;h>=0;h--){
System.out.print(array[h]);
}

//este bucle lo pasa a comp.A2

for(int b=0;b<array.length;b++){
if(array[b]==1){
b=b+1;
while(b<array.length){
if(array[b]==1){
array[b]=0;
}else{
array[b]=1;
}
b++;
}

}break;
}


System.out.println();

returneado = array.toString(); //Esto lo pongo para poder convertir el array en string

return returneado;
}
}



« Última modificación: 15 Octubre 2012, 20:10 pm por RADIACTIVO » En línea

La ignorancia es la noche de la mente, solo que sin estrellas ni luna que alumbre.
Gallu

Desconectado Desconectado

Mensajes: 247



Ver Perfil
Re: AYUDA CON PROGRAMA EN JAVA
« Respuesta #1 en: 15 Octubre 2012, 22:26 pm »

Hola , el problema estaba en esta línea
Código
  1. returneado = array.toString(); //Esto lo pongo para poder convertir el array en string
  2.  
al llamar al método toString de un objeto(un array también es un objeto) sin sobreescribirlo, lo que te devuelve el nombre de la clase y el hashcode del objeto , más info http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html#toString%28%29(busca toString).

Otra cosa , por convención el nombre de las clases deben empezar con mayúsculas , intenta utilizar también nombres de variables un poco más descriptivas. Aquí va tu clase retocada:
Código
  1. import java.util.*;
  2.  
  3. public class IntegerNumber{
  4.  
  5.  
  6.  
  7. public static void main(String[]args){
  8.  
  9. Scanner sc = new Scanner(System.in);
  10.  
  11. System.out.println("Tell me, which number do you want to convert?");
  12.  
  13. int integerNumber=sc.nextInt();
  14.  
  15. System.out.println("\n" + intToComp2(integerNumber)  + " -- salida"); //NO ME PRINTEA EL STRING!
  16. }
  17.  
  18.  
  19. //METODO QUE PASA DE INTEGER A Comp.A2
  20.  
  21. public static String intToComp2(int integerNumber){
  22.  
  23. int i=0;
  24. int[]array;
  25. int j=integerNumber;
  26. int r;
  27. int m=0;
  28.  
  29.                //fíjate en como redefiní esta variable, y en como la uso al final del método
  30. StringBuffer returneado = new StringBuffer();
  31.  
  32. //este bucle calcula la longitud del array
  33. do{
  34. i++;
  35. array=new int[i];
  36.  
  37. }while((Math.pow(2,i))<=integerNumber);
  38.  
  39. System.out.println("So I will use " + array.length + " bits");
  40.  
  41. //este bucle mete en el array el valor del numero en binario
  42. do{
  43. r=j%2;
  44. j=j/2;
  45. array[m]=r;
  46. if(j/2==1){
  47. array[i-1]=1;
  48. }
  49. m++;
  50. }while(j>1);
  51.  
  52. //esto printea el binario
  53.  
  54. for(int h=m;h>=0;h--){
  55. System.out.print(array[h]);
  56. }
  57.  
  58. //este bucle lo pasa a comp.A2
  59.  
  60. for(int b=0;b<array.length;b++){
  61. if(array[b]==1){
  62. b=b+1;
  63. while(b<array.length){
  64. if(array[b]==1){
  65. array[b]=0;
  66. }else{
  67. array[b]=1;
  68. }
  69. b++;
  70. }
  71.  
  72. }break;
  73. }
  74.  
  75.  
  76. for(int z = 0 ; z < array.length ; z++){
  77. returneado.append(array[z]);
  78. }
  79.  
  80. return returneado.toString();
  81. }
  82. }
  83. Saludos
  84.  


En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
RADIACTIVO

Desconectado Desconectado

Mensajes: 20


syscall


Ver Perfil
Re: AYUDA CON PROGRAMA EN JAVA
« Respuesta #2 en: 16 Octubre 2012, 00:48 am »

Muchísimas gracias! ;-) Has sido de gran ayuda. La verdad es que no conocia el metodo de "StringBuffer". Intentaré ser mas preciso con los detalles de poner las variables mas reconocibles y poner  en mayúscula la primera letra del nombre de la clase. Tras mirar el link que me has pasado, me ha surgido una duda mas, el hascode del objeto, ¿lo podría considerar (mas o menos) la direccion de memoria donde empieza ese String? Saludos y gracias!  ;D
En línea

La ignorancia es la noche de la mente, solo que sin estrellas ni luna que alumbre.
Gallu

Desconectado Desconectado

Mensajes: 247



Ver Perfil
Re: AYUDA CON PROGRAMA EN JAVA
« Respuesta #3 en: 17 Octubre 2012, 23:01 pm »

Hola , me alegro que te haya servido, unas cuantas aclaraciones :
1.- StringBuffer no es un método , es una clase , úsala siempre que necesites ir agregando a un String dentro de un bucle , es preferible por cuestiones de  optimización (también existe la clase StringBuilder).

2.- El retorno del método hashcode no tiene nada que ver con la dirección de memoria del objeto, y no es un método exclusivo de la clase String, TODOS los objetos lo tienen, ya que la implementación de hashcode esta en la clase Object , superclase de TODAS las clases java . mas info http://en.wikipedia.org/wiki/Java_hashCode%28%29

3.- Si te interesa el cómo debes estructurar tu código, igual querrías echarle un ojo a las java code conventions http://www.google.es/url?sa=t&rct=j&q=java%20code%20conventions%20en%20espa%C3%B1ol&source=web&cd=1&sqi=2&ved=0CCIQFjAA&url=http%3A%2F%2Fwww.um.es%2Fdocencia%2Fvjimenez%2Fficheros%2Fpracticas%2FConvencionesCodigoJava.pdf&ei=QBx_UMavHMql0QXWw4HYCA&usg=AFQjCNEN8JVPMCpY64H-MD1Dz7GVLUq-Ew&cad=rja.

Espero haber resolvido en parte tus dudas .

Saludos
En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
RADIACTIVO

Desconectado Desconectado

Mensajes: 20


syscall


Ver Perfil
Re: AYUDA CON PROGRAMA EN JAVA
« Respuesta #4 en: 19 Octubre 2012, 17:01 pm »

Muy amable por todo, si me surge algo mas ya te avisaré!
Saludos!
En línea

La ignorancia es la noche de la mente, solo que sin estrellas ni luna que alumbre.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
programa de Java
Java
belerofonte 1 3,071 Último mensaje 17 Marzo 2005, 09:18 am
por Ambolius
programa java
Ejercicios
Hiras 3 7,528 Último mensaje 4 Junio 2011, 05:32 am
por dakomt
Ayuda Programa Java
Java
supersergio88 2 3,206 Último mensaje 1 Junio 2011, 00:45 am
por Littlehorse
AYUDA CON ESTE PROGRAMA JAVA¡¡¡¡¡
Ejercicios
DomInYK 3 5,639 Último mensaje 4 Agosto 2011, 01:57 am
por bengy
[Ayuda] Hacer un programa java que marque solo
Java
777Rubenix777 1 3,388 Último mensaje 4 Julio 2011, 01:44 am
por [Case]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines