2017-05-15 3 views
6

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

1, 2, 3, 4

1, 2, 4, 4

1, 2, 4, 8

मैं समझता हूं कि पहला प्रिंट सरणी है, दूसरी पंक्ति प्रिंट [2] सरणी के तत्व और तीसरी पंक्ति [3] तत्व है। यहां कोड है:

public class TR1 
{ 
    public static void main(String[] args) 
    { 
     int[] v = {1, 2, 3, 4 }; 
     print(v); 
     x(v, v[2] - 1); 
     print(v); 
     x(v, v[3] - 1); 
     print(v); 
    } 

    public static void x(int array[], int y) 
    { 
     array[y] = array[y - 1] * 2; 
    } 

    public static void print(int array[]) 
    { 
     System.out.print(array[0]); 
     for (int i = 1; i < array.length; i++) 
      System.out.print(", " + array[i]); 
     System.out.println(); 
    } 
} 
+0

जैसे। यह 8 मुद्रित क्यों है? – matrix

+3

एक नौसिखिया के लिए अच्छा सवाल ;-) – GhostCat

+1

@GostCat मैं सहमत हूं, मुझे लगता है कि यह एक बहुत अच्छा सवाल है। – EJoshuaS

उत्तर

2

देखते हैं क्या इस विधि करता है:

public static void x(int array[], int y) 
    { 
     array[y] = array[y - 1] * 2; 
    } 

यह सूचकांक y-1 पर मूल्य लेता है, 2 द्वारा यह गुणा करता है, तो सूचकांक y को यह परिणाम प्रदान करती है।

शुरू सरणी: {1,2,3,4}

v[2] - 1 साथ कॉल सूचकांक 2 (जो 3 है) पर मूल्य लेता है, और substracts 1, तो हम y = 2 है।

क्या हम पहले भी कहा से, विधि सूचकांक 1 (y-1) जो 2 है पर मूल्य लेता है, द्वारा 2 तो हम 4 इसे गुणा करता है, और प्रदान करती है कि सूचकांक 2 (y) करने के लिए।

वर्तमान सरणी: {1,2,4,4}

v[3] - 1 साथ कॉल सूचकांक 3 (जो 4 है) पर मूल्य लेता है, और substracts 1, तो हम y = 3 है।

क्या हम पहले भी कहा से, विधि सूचकांक 2 (y-1) जो 4 है पर मूल्य लेता है, द्वारा 2 तो हम 8 इसे गुणा करता है, और प्रदान करती है कि सूचकांक 3 (y) करने के लिए।

वर्तमान सरणी: {1,2,4,8}

+1

एक नौसिखिया के लिए बहुत अच्छी व्याख्या, अब सब स्पष्ट है। बहुत बहुत धन्यवाद – matrix

5

आने वाली पहली चीज़ों के माध्यम से आपको संक्षेप में चलने देता है। आप इस सरणी से शुरू करते हैं:

1 2 3 4 

प्रिंटिंग करते समय कोई आश्चर्य नहीं।

तो फिर तुम चलाएँ:

x(v, v[2] -1) ... evaluates to 

x(v, 3 - 1) ... evaluates to 

x(v, 2) 

कौन सा सरणी में परिवर्तन के आधार पर:

array[y] = array[y - 1] * 2; 

चलें 2 के रूप में y सम्मिलित (ऊपर देखें):

array[2] = array[1] * 2; 

array[2] = 2 * 2; 

को प्रेरित किया:

1, 2, 4, 4 

तो, असली जवाब यह है: आपको डीबगर की भी आवश्यकता नहीं है। पेपर का एक टुकड़ा, एक कलम और थोड़ी सी सोच यहां "रहस्य" को उजागर करने के लिए और भी अधिक कुशल है।

1

print हमेशा संपूर्ण सरणी प्रिंट करता है। x और y बीच में सरणी में परिवर्तन कर रहे हैं।

ध्यान रखें कि v[x] केवल एक पूर्णांक है। उदाहरण के लिए, v[2] प्रारंभिक है, इसलिए v[2] - 1 = 2। इसलिए यह पर पहली और दूसरी कॉल के बीच v[2] संशोधित करता है।

+0

बहुत धन्यवाद, मुझे यह मिल गया है, लेकिन [3] प्रारंभ में 4 है और यह प्रिंट 8 – matrix

+1

@ मेट्रिक्स वास्तव में प्रिंट करता है, [3] 8 * दूसरे * समय 'x' में बदला जाता है। पहली बार 'x' कहा जाता है, '[2]' बदलकर' 4' हो जाता है। – EJoshuaS

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