Autor
|
Tema: AYUDA CON PROGRAMA EN JAVA (Leído 3,037 veces)
|
RADIACTIVO
Desconectado
Mensajes: 20
syscall
|
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 . Por favor cualquier ayuda será bien recibida, os dejo a continuación el código fuente. Saludos y gracias! 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
Mensajes: 247
|
Hola , el problema estaba en esta línea returneado = array.toString(); //Esto lo pongo para poder convertir el array en string
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: 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("\n" + intToComp2 (integerNumber ) + " -- salida"); //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; //fíjate en como redefiní esta variable, y en como la uso al final del método //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--){ } //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; } for(int z = 0 ; z < array.length ; z++){ returneado.append(array[z]); } return returneado.toString(); } } 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
Mensajes: 20
syscall
|
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!
|
|
|
En línea
|
La ignorancia es la noche de la mente, solo que sin estrellas ni luna que alumbre.
|
|
|
Gallu
Desconectado
Mensajes: 247
|
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
Mensajes: 20
syscall
|
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.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
programa de Java
Java
|
belerofonte
|
1
|
3,071
|
17 Marzo 2005, 09:18 am
por Ambolius
|
|
|
programa java
Ejercicios
|
Hiras
|
3
|
7,528
|
4 Junio 2011, 05:32 am
por dakomt
|
|
|
Ayuda Programa Java
Java
|
supersergio88
|
2
|
3,206
|
1 Junio 2011, 00:45 am
por Littlehorse
|
|
|
AYUDA CON ESTE PROGRAMA JAVA¡¡¡¡¡
Ejercicios
|
DomInYK
|
3
|
5,639
|
4 Agosto 2011, 01:57 am
por bengy
|
|
|
[Ayuda] Hacer un programa java que marque solo
Java
|
777Rubenix777
|
1
|
3,388
|
4 Julio 2011, 01:44 am
por [Case]
|
|