2010-11-10 8 views
5

Existe-t-il un moyen facile sans avoir à utiliser la bibliothèque java pour concaténer deux int? Peut-être math?concaténation de deux int en Java

dire que j'ai 9 et 10, je veux que ce soit 910 ou 224 et 225 alors je veux que ce soit 224225.

+1

Voulez-vous que le résultat soit également un nombre entier? –

+3

Ai-je raté quelque chose? que diriez-vous de ceci: Chaîne result = 9 + "" + 10; ou int i = Integer.valueOf (9 + "" + 10); –

+0

oui! résultat final en entier s'il vous plaît! – aherlambang

Répondre

18

Tout en java.lang.* devrait être un jeu équitable ...

int a = Integer.parseInt(Integer.toString(9) + Integer.toString(10)); 

Addendum:

Je n'aime pas ce qui suit la syntaxe, car la surcharge de l'opérateur ne déclare pas l'intention aussi clairement que ce qui précède. Principalement parce que si la chaîne vide est enlevée par erreur, le résultat est différent.

int a = Integer.parseInt(9 + "" + 10); 
+1

J'aime faire ce 'int a = Integer.parseInt (9 +" "+ 10)'. Beaucoup plus précis. –

+1

@Adeel - Je ne suis pas d'accord. Lisez mes commentaires sur la réponse de pst. – Jeremy

+0

@Jeremy: Cela ne tient pas ici. Parce que si vous supprimez accidentellement les 'empty_quotes', le lendemain matin, vous penserez pourquoi devrais-je analyser' int' en 'int'. Et cela devrait vous donner un indice que vous n'avez jamais été aussi stupide de le faire en premier lieu. Donc, il doit y avoir quelque chose qui manque. Ah ouais 'empty_quotes'. –

4

Vous (probablement) veulent concaténation de chaînes (vous pouvez également un résultat entier , si c'est le cas, voir les autres réponses). Si cela est vrai, de la concaténation, imaginez a et b sont des nombres entiers:

"" + a + b 

Cela fonctionne parce que l'opérateur + est surchargé si l'opérande est une chaîne. Il convertit ensuite l'autre opérande en une chaîne (si nécessaire) et aboutit à une nouvelle chaîne concaténée. Vous pouvez également appeler Integer.toString(a) + Integer.toString(b) ou utiliser un String.format approprié, mais ces méthodes sont plus longues.

+2

J'ai toujours détesté cette notation. Si la chaîne a été supprimée, l'intention de concaténer 'a' et' b' n'est pas claire. – Jeremy

+1

'a +" "+ b' est un peu plus lisible pour les débutants. – BalusC

+0

@Jeremy Static dactylographie est mon ami :-) –

16

Cela vous donnera un entier de retour comme prévu, mais ne fonctionne que lorsque b > 0.

int a = 224; 
int b = 225; 
int c = (int) Math.pow(10, Math.floor(Math.log10(b))+1)*a + b; // 224225 

Juste une explication rapide: Ceci détermine le nombre de chiffres dans b, calcule alors un facteur de multiplication pour a telle qu'elle se déplacerait dans la base 10 par un chiffre de plus de b.

Dans cet exemple, b a 3 chiffres, floor(log10(b)) renvoie 2 (faire intuitivement 10^2=100, 10^3 = 1000, nous sommes quelque part entre à 225). Ensuite, nous calculons un facteur de multiplication de 10^(2+1), c'est 1000. Lorsque nous multiplions a par 1000, nous obtenons 224000. L'ajout de 224000 à 225 donne le 224225 souhaité.

Echoue à b == 0 car log10(0) est indéfini.

+0

Intéressant. +1 –

+0

C'était tellement propre! +1 –

1

Voici ma version qui fonctionne quand a, b> = 0.

Il est un peu plus, mais il est 10 fois plus rapide que l'approche journal et 5 fois plus rapide que les chaînes annexant.

int concat(int a, int b) 
{ 
    if (b == 0) 
     a *= 10; 
    else 
    { 
     int tempB = b; 
     while (tempB > 0) 
     { 
     tempB /= 10; 
     a *= 10; 
     } 
    } 
    return a + b; 
} 

N'hésitez pas à modifier cela pour travailler avec des nombres négatifs.

0

a + "" + b

résultats dans l'erreur "types" incompatibles

// The left operand to previousOperator. 
private int leftOperand; 

leftOperand = leftOperand + "" + numéro;

nombre

est défini comme int dans la déclaration de la méthode

Cela fonctionne

java.lang importation. *

leftOperand = Integer.parseInt (Integer.toString (leftOperand) + Integer.toString (nombre));