2013-10-29 14 views
29

मैं सोच रहा था कि 2 डी सरणी प्रिंट करने का सबसे अच्छा तरीका क्या था। यह मेरे पास कुछ कोड है और मैं बस सोच रहा था कि यह अच्छा अभ्यास है या नहीं। अगर आपको कोई पता चलता है तो मैंने इस कोड में किए गए किसी भी अन्य गलतियों में भी मुझे सही किया है। धन्यवाद!जावा - 2 डी सरणी मुद्रित करने का सबसे अच्छा तरीका?

int rows = 5; 
int columns = 3; 

int[][] array = new int[rows][columns]; 

for(int i = 0; i<rows; i++) 
    for(int j = 0; j<columns; j++) 
     array[i][j] = 0; 

for(int i = 0; i<rows; i++) 
{ 
    for(int j = 0; j<columns; j++) 
    { 
     System.out.print(array[i][j]); 
    } 
    System.out.println(); 
} 
+3

सर्वश्रेष्ठ - किस परिभाषा से? –

+0

यदि आपके वास्तविक सरणी लंबाई का उपयोग किया जाता है तो आपके लूप के लिए सुरक्षित होगा। –

+1

यह प्रश्न ऑफ-विषय प्रतीत होता है क्योंकि यह किसी विशिष्ट प्रश्न के बिना कोड की समीक्षा करने के बारे में है, और [codereview.se] –

उत्तर

77

आप सरल तरीके से प्रिंट कर सकते हैं।

नीचे

उपयोग -1 डी सरणी मुद्रित करने के लिए नीचे दिए गए 2 डी सरणी मुद्रित करने के लिए

int[][] array = new int[rows][columns]; 
System.out.println(Arrays.deepToString(array)); 

उपयोग

int[] array = new int[size]; 
System.out.println(Arrays.toString(array)); 
+3

2 डी संस्करण प्रिंट सब कुछ :( –

+0

@DangManhTroung फिर प्रिंट लाइन के साथ लूप के लिए लिखें। – JakeWilson801

+3

मुझे पता है कि यह थोड़ी देर बाद है, लेकिन यह सबकुछ अलग-अलग लाइनों पर प्रिंट करता है।[मैंने इसे इस उत्तर से लिया] (https://stackoverflow.com/questions/12845208/how-to-print-two-dimensional-array-like-table#17423410) 'System.out.println (Arrays.deepToString (दो डीएम) .replace ("],", "] \ n")); – wanderer0810

5

तुम्हारे पास क्या है के साथ गलत कुछ भी नहीं है। लूप के लिए डबल-नेस्टेड को आपके कोड को पढ़ने वाले किसी भी व्यक्ति द्वारा आसानी से पचाना चाहिए।

यह कहा गया है कि निम्नलिखित फॉर्मूलेशन घनत्व और अधिक मूर्खतापूर्ण जावा है। मैं सुझाव देता हूं कि Arrays और Collections जैसे कुछ स्थिर उपयोगिता वर्गों के आसपास पोकिंग करना जल्द से जल्द बाद में होगा। बॉयलरप्लेट के टोन को उनके कुशल उपयोग से बंद कर दिया जा सकता है।

for (int[] row : array) 
{ 
    Arrays.fill(row, 0); 
    System.out.println(Arrays.toString(row)); 
} 
+0

यह समाधान शीर्ष बाएं कोने पर (0,0) के साथ आपकी सरणी मुद्रित करेगा (जो सीएस में अधिकांश चीजों के लिए सम्मेलन है, एक छवि में जीयूआई प्लेसमेंट या पिक्सेल स्थान के रूप में)। कई गैर-सी परिदृश्यों में आप निचले बाएं कोने में (0,0) होना चाहते हैं, हालांकि, इस मामले में एक फ़ोरैच लूप काम नहीं करेगा। –

1

@ अशिका का उत्तर शानदार रूप से काम करता है यदि आप (0,0) को सामान्य सीएस सम्मेलन में शीर्ष, बाएं कोने में प्रदर्शित करना चाहते हैं। यदि फिर भी आप सामान्य गणितीय सम्मेलन का उपयोग करें और (0,0) निचले बाएँ हाथ के कोने में डाल करने के लिए पसंद करते हैं, तो आप इस इस्तेमाल कर सकते हैं:

LinkedList<String> printList = new LinkedList<String>(); 
for (char[] row: array) { 
    printList.addFirst(Arrays.toString(row));; 
} 
while (!printList.isEmpty()) 
    System.out.println(printList.removeFirst()); 

यह LIFO (पिछले सबसे पहले आउट) का इस्तेमाल किया पर क्रम को उल्टा करने के लिए प्रिंट समय

6

मैं आमतौर पर foreach पसंद करूंगा जब मुझे अपने सूचकांक के साथ अंकगणितीय परिचालन करने की आवश्यकता नहीं है।

for (int[] x : array) 
{ 
    for (int y : x) 
    { 
     System.out.print(y + " "); 
    } 
    System.out.println(); 
} 
3

है यही कारण है कि सबसे अच्छा मुझे लगता है:

for (int[] row : matrix){ 
    System.out.println(Arrays.toString(row)); 
    } 
1
|1 2 3| 
|4 5 6| 

उपयोग नीचे कोड मूल्यों मुद्रित करने के लिए।

System.out.println(Arrays.deepToString()); 

आउटपुट इस तरह दिखेगा (एक पंक्ति में पूरे मैट्रिक्स):

[[1,2,3],[4,5,6]] 
5

सरल और साफ रास्ता एक 2D सरणी मुद्रित करने के लिए।

System.out.println(Arrays.deepToString(array).replace("], ", "]\n").replace("[[", "[").replace("]]", "]")); 
संबंधित मुद्दे