स्कूल के काम के लिए मुझे एक वर्ग के लिए एक कंस्ट्रक्टर लिखना होगा जिसमें पूर्णांकों की 2-आयामी सरणी हो। कंस्ट्रक्टर एक पारित दो-आयामी सरणी की प्रतिलिपि बनाता है। नीचे वह कोड है जो मेरे पास अब तक है। मेरे पास वर्तमान मुद्दा यह है कि सरणी को कैसे प्रारंभ किया जाए जब पारित सरणी का "कॉलम" आकार अनजान हो। मुझे लगता है कि मेरे पास जो मुद्दा है वह सरणी बनाते और प्रारंभ करते समय है। आंतरिक और बाहरी सरणी की लंबाई अज्ञात है।

 public IntMatrix (int[][] array)
    {_matrix = new int [array.length][array.length-1].length];
    for (int i = 0; i < array.length; i++) {
        for(int j=0; j < array[i].length; j++)
        _matrix[i][j]=array[i][j];
    }
}
0
user1454994 28 जिंदा 2016, 20:30

2 जवाब

सबसे बढ़िया उत्तर

जैसा कि मैंने एक टिप्पणी में कहा था, आपके पास सरणी की एक सरणी है:

public IntMatrix(int[][] array) {
    matrix = new int[array.length][];
    for (int i = 0; i < array.length; i++) {
        matrix[i] = new int[array[i].length];
        for(int j=0; j < array[i].length; j++) {
            matrix[i][j] = array[i][j];
        }
    }
}
1
JB Nizet 28 जिंदा 2016, 20:45

आप हमेशा myArray.length के माध्यम से एक सरणी का आकार निर्धारित कर सकते हैं, ताकि आप प्रत्येक पंक्ति/स्तंभ के लिए आवंटित कर सकें, जैसा कि आप पुनरावृति करते हैं।

एक विचार, हालांकि। क्या केवल संदर्भ को उस सरणी में संग्रहीत करना स्वीकार्य है जिसे आपने पारित किया है? क्या यह आपकी कक्षा के बाहर बदलेगा ? यदि नहीं, तो यह एक आसान समाधान हो सकता है यदि आपको आंतरिक रूप से सरणी को फिर से बनाने की आवश्यकता नहीं है।

0
Brian Agnew 28 जिंदा 2016, 20:34