2011-10-16 27 views
16

मेरे पास एक [20] [20] दो आयामी सरणी है जिसे मैंने छेड़छाड़ की है। कुछ शब्दों में मैं उपयोगकर्ता इनपुट निर्देशों जैसे पेन अप = 0 और पेन डाउन = 1 के साथ एक कछुए प्रोजेक्ट कर रहा हूं। उदाहरण के लिए जब पेन अलग-अलग सरणी स्थान नीचे है, [3] [4] को "1" के साथ चिह्नित किया गया है ।जावा - प्रिंटिंग दो आयामी सरणी

मेरे कार्यक्रम का अंतिम चरण 20/20 सरणी मुद्रित करना है।

मैं समझ नहीं है कि यह कैसे मुद्रित करने के लिए और मैं एक "X"

प्रिंट आदेश वास्तव में एक वर्ग है कि एक माता पिता के कार्यक्रम फोन करेगा अंदर एक विधि है साथ "1" प्रतिस्थापित करने की आवश्यकता .. मुझे पता है कि मुझे एक लूप का उपयोग करना है ... किसी भी मदद की सराहना की जाएगी।

public void printGrid() 
     { 
      System.out.println... 
     } 

उत्तर

24
public void printGrid() 
{ 
    for(int i = 0; i < 20; i++) 
    { 
     for(int j = 0; j < 20; j++) 
     { 
     System.out.printf("%5d ", a[i][j]); 
     } 
     System.out.println(); 
    } 
} 

और बदलने के लिए

public void replaceGrid() 
{ 
    for (int i = 0; i < 20; i++) 
    { 
     for (int j = 0; j < 20; j++) 
     { 
     if (a[i][j] == 1) 
      a[i][j] = x; 
     } 
    } 
} 

और आप एक ही बार में सब कर सकते हैं:

public void printAndReplaceGrid() 
{ 
    for(int i = 0; i < 20; i++) 
    { 
     for(int j = 0; j < 20; j++) 
     { 
     if (a[i][j] == 1) 
      a[i][j] = x; 
     System.out.printf("%5d ", a[i][j]); 
     } 
     System.out.println(); 
    } 
} 
+0

क्या मैं प्रिंटग्रिड विधि के अंदर प्रतिस्थापित कर सकता हूं? – user997462

+0

यकीन है! उस ' – COD3BOY

+0

के अंदर' if' जोड़ें अद्यतन देखें ...... – COD3BOY

1

आप

for ...row index... 
    for ...column index... 
    print 

तरह पंक्तियों और फिर कॉलम द्वारा पाश एक संरचना के साथ, लेकिन मुझे लगता है कि होना चाहिए इस होमवर्क तो बस इसे अपने से आज़माने है।

लूप के लिए पंक्ति/कॉलम इंडेक्स को स्वैप करें, भले ही आपको पहले और फिर नीचे, पहले बनाम नीचे और फिर नीचे जाने की आवश्यकता हो।

+0

मैं 1 को x के साथ कैसे बदलूं? बीटीडब्ल्यू, होमवर्क नहीं ... मैं 40 साल का आईटी प्रो (नेटवर्किंग) हूं जो प्रोग्रामिंग द्वारा हमेशा कुछ नया सीखने से चिंतित है। – user997462

+0

बस चलने पर (लूप के अंदर) चरित्र को चेक करें और इसे '1' – Jack

+0

@ जैक - 'प्रिंट (ए [i] [j] == 1?' X ':' '' जैसे कुछ की तरह बदलें; ' –

18

कुछ इस तरह है कि मैं एक और सवाल

public class Snippet { 
    public static void main(String[] args) { 
     int [][]lst = new int[10][10]; 

     for (int[] arr : lst) { 
      System.out.println(Arrays.toString(arr)); 
     } 
    } 

} 
1

में जवाब देने के खैर, चूंकि 'एक्स' एक char है और एक int नहीं है, तो आप कार्य नहीं कर सकते हैं ually मैट्रिक्स अपने आप में इसे बदलना है, तथापि, निम्नलिखित कोड एक 'एक्स' चार प्रिंट चाहिए जब भी यह एक 1.

public void printGrid(int[][] in){ 
    for(int i = 0; i < 20; i++){ 
     for(int j = 0; j < 20; j++){ 
      if(in[i][j] == 1) 
       System.out.print('X' + "\t"); 
      else 
       System.out.print(in[i][j] + "\t"); 
     } 
     System.out.print("\n"); 
    } 
} 
+0

मैं इसे 20 से 20 ग्रिड मुद्रित करने के लिए कैसे प्रारूपित करूं? – user997462

+0

यह सिर्फ ठीक प्रिंट करना चाहिए। प्रत्येक तत्व को अलग करने के लिए आप प्रत्येक प्रिंट स्टेटमेंट के अंत में एक टैब वर्ण ("\ t", या कोई वर्ण, अपनी वरीयता) जोड़ सकते हैं। – Wyatt915

27

आप उपयोगिता mettod उपयोग कर सकते हैं भर आता है। Arrays.deeptoString();

public static void main(String[] args) { 
    int twoD[][] = new int[4][]; 
    twoD[0] = new int[1]; 
    twoD[1] = new int[2]; 
    twoD[2] = new int[3]; 
    twoD[3] = new int[4]; 

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

} 
+1

'Arrays।deepToString' प्रिंट 2 डी सरणी करता है लेकिन केवल एक पंक्ति पर, जितना उपयोगी हो सकता है, यह सवाल नहीं है कि यह प्रश्न (ग्रिड) है। –

0

आप MAXVALUE पता है (आसानी से किया जा सकता है अगर तत्वों की एक और यात्रा कोई मुद्दा नहीं है) मैट्रिक्स के, मैं निम्नलिखित कोड और अधिक प्रभावी और सामान्य पाते हैं।

int numDigits = (int) Math.log10(maxValue) + 1; 
    if (numDigits <= 1) { 
     numDigits = 2; 
    } 
    StringBuffer buf = new StringBuffer(); 
    for (int i = 0; i < matrix.length; i++) { 
     int[] row = matrix[i]; 
     for (int j = 0; j < row.length; j++) { 
      int block = row[j]; 
      buf.append(String.format("%" + numDigits + "d", block)); 
      if (j >= row.length - 1) { 
       buf.append("\n"); 
      } 
     } 
    } 
    return buf.toString(); 
1

इस कोशिश के बारे में कैसे?

public static void main (String [] args) 
{ 
    int [] [] listTwo = new int [5][5]; 
    // 2 Dimensional array 
    int x = 0; 
    int y = 0; 
    while (x < 5) { 
     listTwo[x][y] = (int)(Math.random()*10); 

     while (y <5){ 
      listTwo [x] [y] = (int)(Math.random()*10); 
      System.out.print(listTwo[x][y]+" | "); 
      y++;     
     } 
     System.out.println(""); 
     y=0; 
     x++; 
    } 
} 
संबंधित मुद्दे