मैं सभी को प्रदर्शित करने के लिए एक समारोह लिखने की कोशिश कर रहा हूँएक जंजीर सरणी में संयोजन, जहां प्रत्येक संयोजन में प्रत्येक उप-सरणी से एक तत्व होता है। जंजीर सरणी में किसी भी संख्या में सरणी हो सकती है और प्रत्येक सरणी में तत्वों की संख्या हो सकती है। जैसे निम्नलिखित सरणी के लिए: एक [0] = {1, 3, 5} एक [1] = {2, 4} इसे वापस करना चाहिए: (1, 2) (1, 4) (3, 2) (3, 4) (5, 2) (5, 4)
मैंने इसे इस तरह से करने के बारे में सोचा लेकिन तुरंतमुसीबत में भागो। तर्कसंगत रूप से यह 1, 2 और 1, 4 प्राप्त करने के लिए ठीक लगता है लेकिन फिर अगला रन मैं 0 पर वापस सेट किया गया है (क्षमा करें अब परीक्षण करने के लिए डेवेल मशीन पर नहीं)। क्या कोई बेहतर समाधान सुझा सकता है?
मेरा कोड यहाँ है
for (int i = 0; i < array1.length(); i++)
for (int j = 0; j < array2.length(); j++)
if (j < array2.length())
i = 0;
else
i++;
System.out.println(array1[i] "," array2[j])
उत्तर:
उत्तर № 1 के लिए 1आपको इसकी आवश्यकता नहीं है:
if (j < array2.length())
i = 0;
else
i++;
मैं लूप के लिए स्वचालित रूप से वृद्धि हुई है।
यह ठीक होना चाहिए:
for (int i = 0; i < array1.length(); i++)
for (int j = 0; j < array2.length(); j++)
System.out.println(array1[i] "," array2[j])
जवाब के लिए 0 № 2
अगर मैं आपके प्रश्न को सही ढंग से समझ रहा हूं (जो मैं नहीं हो सकता) मुझे लगता है कि आपको बस इतना ही चाहिए
for (int i = 0; i < array1.length(); i++){
for (int j = 0; j < array2.length(); j++){
System.out.println(array1[i] "," array2[j]);
}
}
वांछित परिणाम प्राप्त करने के लिए
जवाब के लिए 0 № 3
इस बारे में कैसा है:
int एक [] = {1,2,3}; int बी [] = {1,2};
for (int i = 0; i < b.length; i++) {
for (int j = 0; j < a.length; j++) {
System.out.println(a[i]+","+a[j]);
}
}
जवाब के लिए 0 № 4
तुंहारे if
लूप के अंदर बयान सब कुछ तोड़ देता है। अपना कार्य पूरा करने के लिए आपको केवल 2 नेस्टेड लूप की आवश्यकता है:
for (int i = 0; i < array1.length(); i++)
for (int j = 0; j < array2.length(); j++) {
System.out.println(array1[i] + "," + array2[j]);
}
}
जवाब के लिए 0 № 5
for (int i = 0; i < array1.length(); i++)
for (int j = 0; j < array2.length(); j++)
System.out.println("(" + array1[i] + "," array2[j] + ")");
जवाब के लिए 0 № 6
यहां एक सामान्य समाधान है जो किसी भी प्रकार के सरणी के साथ काम करता है (इस एल्गोरिदम के रनटाइम की घातीय प्रकृति से सावधान रहें):
int[][] arrays = new int[][]
{
{1, 2, 3, 4, 5, 6},
{1, 2, 3, 4, 5, 6},
{1, 2, 3, 4, 5, 6}
}; // let"s print all fair rolls of a 3d6
if (arrays.length == 0) return; // this is why we can"t have nice things
int[] currentPos = new int[arrays.length];
while(currentPos[arrays.length - 1] != arrays[arrays.length - 1].length)
{
// print the current value
System.out.print(arrays[0][currentPos[0]]);
for (int i = 1; i < arrays.length; ++i)
System.out.print(", " + arrays[i][currentPos[i]]);
System.out.println();
// increment the "counter"
++currentPos[0];
for (int i = 1; i < arrays.length; ++i)
{
if (currentPos[i - 1] == arrays[i - 1].length)
{
currentPos[i - 1] = 0;
++currentPos[i];
}
else break;
}
}