2010-11-10 19 views
5

क्या जावा लाइब्रेरी का उपयोग करने के बिना दो int को दोबारा उपयोग करने का कोई आसान तरीका है? शायद गणित?जावा में दो int को जोड़ना

कहते हैं कि मैं 9 और 10 है, तो मैं यह तो 910 या 224 और 225 होना चाहता हूँ मैं इसे 224225.

+1

क्या आप परिणाम भी एक पूर्णांक होना चाहते हैं? –

+3

क्या मुझे कुछ याद आ रहा है? इसके बारे में कैसे: स्ट्रिंग परिणाम = 9 + "" + 10; या int i = Integer.valueOf (9 + "" + 10); –

+0

हाँ! पूर्ण परिणाम के रूप में अंतिम परिणाम कृपया! – aherlambang

उत्तर

18

java.lang.* में कुछ भी निष्पक्ष खेल होना चाहिए ...

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

परिशिष्ट:

मुझे पसंद नहीं है वाक्य रचना निम्नलिखित क्योंकि ऑपरेटर ओवरलोडिंग के रूप में स्पष्ट रूप से के रूप में आशय की घोषणा नहीं करता उपरोक्त। मुख्य रूप से क्योंकि यदि खाली स्ट्रिंग को गलती से बाहर निकाला जाता है, तो परिणाम अलग होता है।

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

मैं इसे 'int a = Integer.parseInt (9 + "" + 10)' बनाना चाहता हूं। अधिक सटीक। –

+1

@Adeel - मैं असहमत हूं। पीएसटी के जवाब पर मेरी टिप्पणियां पढ़ें। – Jeremy

+0

@ जेरेमी: यह यहां नहीं है। क्योंकि अगर आप गलती से 'blank_quotes' को हटा देते हैं, तो अगली सुबह आपको लगता है कि मुझे' int' को 'int' क्यों पार्स करना चाहिए। और यह आपको एक संकेत देना चाहिए कि आप पहले कभी ऐसा करने के लिए बेवकूफ नहीं रहे हैं। तो, कुछ याद आना चाहिए। ओह हाँ 'empty_quotes'। –

4

होना चाहते हैं आप (संभावना) स्ट्रिंग संयोजन चाहते हैं (आप भी एक पूर्णांक परिणाम चाहते हो सकता है , यदि ऐसा है, तो अन्य उत्तरों देखें)। अगर यह सही है, संयोजन के बारे में, एक कल्पना और ख पूर्णांक हैं:

"" + a + b 

यह काम करता है क्योंकि + ऑपरेटर अगर या तो संकार्य एक स्ट्रिंग है ओवरलोड हो गया है। इसके बाद यह अन्य ऑपरेंड को एक स्ट्रिंग (यदि आवश्यक हो) में परिवर्तित करता है और परिणामस्वरूप एक नई समेकित स्ट्रिंग में परिणाम होता है। आप Integer.toString(a) + Integer.toString(b) भी आमंत्रित कर सकते हैं या उचित String.format का उपयोग कर सकते हैं, लेकिन वे विधियां अधिक लंबी हैं।

+2

मैंने हमेशा इस नोटेशन को नापसंद किया है। यदि स्ट्रिंग को किसी तरह से बाहर निकाला गया था, तो 'ए' और' बी 'को संयोजित करने का इरादा स्पष्ट नहीं है। – Jeremy

+1

'ए +" "+ बी' स्टार्टर्स के लिए थोड़ा और पठनीय है। – BalusC

+0

@ जेरेमी स्टेटिक टाइपिंग मेरा दोस्त है :-) –

16

यह वापस आप एक पूर्णांक दे देंगे अपेक्षा के अनुरूप है, लेकिन केवल जब b > 0 काम करता है।

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

बस एक त्वरित विवरण: इस b में अंकों की संख्या निर्धारित करता है, तो a ऐसी है कि वह b एक से अधिक अंकों से आधार 10 में कदम होगा के लिए एक गुणन कारक गणना करता है।

इस उदाहरण में, b 3 अंक, floor(log10(b)) रिटर्न 2 (ऐसा करने intuitively 10^2=100, 10^3 = 1000 के रूप में, हम कहीं बीच में 225 पर हैं) है। फिर हम 10^(2+1) के गुणात्मक कारक की गणना करते हैं, यह 1000 है। जब हम 1000 से a गुणा करते हैं तो हमें 224000 मिलता है। 224000 से 225 को वांछित 224225 जोड़ना।

यह b == 0 पर विफल रहता है क्योंकि log10(0) अपरिभाषित है।

+0

दिलचस्प। +1 –

+0

वह इतना साफ था! +1 –

1

यहाँ मेरी संस्करण है जो काम करता है जब क, ख> = 0.

यह थोड़ा अधिक समय है, लेकिन लॉग दृष्टिकोण की तुलना में 10x तेजी से होता है और 5x तार जोड़कर तुलना में तेजी से।

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; 
} 

नकारात्मक संख्याओं के लिए काम करने के लिए इसे संशोधित करने के लिए स्वतंत्र महसूस करें।

0

एक + "" + b त्रुटि में

परिणाम "असंगत प्रकार"

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

leftOperand = leftOperand + "" + संख्या;

संख्या विधि घोषणा में पूर्णांक के रूप में परिभाषित किया गया है

यह

आयात java.lang काम करता है। *

leftOperand = Integer.parseInt (Integer.toString (leftOperand) Integer.toString + (संख्या));

संबंधित मुद्दे