[AYUDA]Convertir un array de enteros a un numero entero en Java

Iniciado por Suncar007, 6 Noviembre 2017, 20:14 PM

0 Miembros y 1 Visitante están viendo este tema.

Suncar007

Buenas, quisiera saber si es posible que los elementos de un array de enteros se unan para formar un numero entero.

Me explico:

Si tengo este array:
Código (java) [Seleccionar]
int[] cadena = {1,2,3,4};

Quiero convertirlo para poder usarlo de esta manera:
Código (java) [Seleccionar]
int numero = 1234;

Espero haberme explicado correctamente.
Gracias de antemano.

Serapis

#1
Desconozco que exista una función en ningún lenguaje para hacer eso.

Pueden diseñarse miles y miles de funciones... inútiles, no tiene sentido meter todas las ocurrencias en un lenguaje para que alguien las use 1 vez cada 5 años.

Precisamente por eso existe la programación, para implementar con las funcionalidad básica de un lenguaje aquello que de forma nativa no ofrece pero se necesita.

Aunque el asunto es que es son matemáticas de 10 años o así... y casi mejor que decirte otra cosa es decirte que regreses a parvulitos a estudiar aquella lección que se ve que te saltaste  :silbar: :silbar: :silbar:


// Se supone que el contenido del array serán valores comprendidos entre 0 y 9)
entero = funcion ConvertirArrayDeBytesAEntero(array de bytes valores() )
   entero valor, k

   bucle para k desde 0 hasta valores.count  
       valor += ((10 elevado a k) * valores(k))
   fin bucle
   devolver valor
fin funcion

Date cuenta, que si operamos con números (operaciones matemáticas) es preferible que el array de entrada sean también números. Si, sí o sí en origen tienes un array de cadenas, o lo conviertes previamente a un array de bytes, o haces la conversión en el propio bucle elemento a elemento, antes de realizar el cálculo.

Si el array es demasiado largo (en realidad suficientemente corto para la capacidad de un array), habrá un error de desbordamiento del entero, razón principal por la que nadie implementará tal función en un lenguaje... no pararía de generarse errores contínuamente día tras día.
Nada entorpece más (el futuro de) un lenguaje que funciones no acotadas, donde los principantes inundan las redes siempre con las mismas preguntas por no entender que están haciendo al usarlo inapropiadamente.

Si los valores son bytes (no cadenas, esto es un byte 0 tiene un valor numérico = 0, en cambio un string "0" es un byte de valor 48), pueden usarse funciones del lenguaje para copiar x bytes de un array a una variable, sin necesidad de ninguna conversión explícita. Se accede al puntero de memoria preciso, y desde ahí se copian al destino los bytes necesarios.


p.d.:
Por último señalar que si la función va a ser invocada constantemente, es más eficiente generar un array con las potencias de 10, al inicio del programa (un array estático), que recalcularlo en cada llamada a la función.

array estatico de enteros Potencias10(de 0 a 9) //con 10 alcanza hasta un valor de:  9.999.999.999

funcion InicializarPrograma
    entero k

    bucle para k desde 0 hasta 9
        potencias10(k) = 10 elevado a la k
    fin bucle

    // o un código alternativo al bucle previo:
    potencias10(0)= 1
    bucle para k desde 1 hasta 9
        potencias10(k) = (potencias10(k-1) * 10)
    fin bucle
fin funcion

//y en la línea de la función anterior:
valor +=  (10 elevado a k) * valores(k)
// la remplazas por:
valor +=  (potencias10(k) * valores(k))


PabloPbl

Yo lo haria de la siguiente forma.

Código (java) [Seleccionar]

int[] cadena = {1,2,3,4};
        String unionString = "";
        int union = 0;
       
        for(int i = 0; i < cadena.length; i++) {
            unionString += cadena[i];
        }
       
        union = Integer.parseInt(unionString);
        System.out.println(union);


Si no entiendes algo avisa.
Saludos.