2012-10-09 37 views
12

पर स्ट्रिंग संरेखित करने के लिए मैं कैसे के लिए कोड लिखने के लिए है:सांत्वना उत्पादन

Multiplication Tables Description: Print out the grade school multiplication table upto 12*12

मैं कोड लिखा था:

public class tables { 
    public static void main(String[] args) { 
     //int[][] table = new int[12][12]; 
     String table=""; 
     for(int i=1; i<13; i++){ 
      for(int j=1; j<13; j++){ 
       //table[i-1][j-1] = i*j; 
       table+=(i*j)+" "; 
      } 
      System.out.println(table.trim()); 
      table=""; 
     } 
    } 
} 

लेकिन समस्या यह उत्पादन प्रारूप के साथ है। मुझे फैशन की तरह मैट्रिक्स में आउटपुट की आवश्यकता है, प्रत्येक चौड़ाई 4 की चौड़ाई के लिए स्वरूपित है (संख्याएं सही-गठबंधन हैं और प्रत्येक पंक्ति पर अग्रणी/पिछली जगहों को अलग करती हैं)। मैंने google को आजमाया लेकिन मेरी समस्या का कोई अच्छा समाधान नहीं मिला। क्या कोई व्यक्ति मेरी सहायता कर सकता है?

+4

'String.Format ("% 4s ", ...) ' – khachik

+2

@khachik: क्या आप कृपया वर्णन कर सकते हैं कि 'String.format (% 4s", ...)' काम करता है? और 'प्रारूप() ' –

उत्तर

33

आप अपनी जरूरत के अनुसार अपने उत्पादन को स्वरूपित करने format() उपयोग कर सकते हैं ..

for(int i=1; i<13; i++){ 
     for(int j=1; j<13; j++){ 

      System.out.format("%5d", i * j); 
     } 
     System.out.println(); // To move to the next line. 
    } 

या, आप भी उपयोग कर सकते हैं: -

System.out.print(String.format("%5d", i * j)); 

System.out.format के स्थान पर ..

यहां का स्पष्टीकरण है %5d काम करता है: -

  • सबसे पहले, हम पूर्णांक प्रिंट कर रहे हैं के बाद से, हम %d जो पूर्णांकों के लिए फॉर्मेट स्पेसिफायर है का उपयोग करना चाहिए ..
  • %5d में 5 कुल चौड़ाई अपने उत्पादन ले जाएगा मतलब है .. इसलिए, यदि आपका मूल्य 5 है, यह ****5
  • %5dसंरेखित सही .. के लिए संरेखित छोड़ दिया है, आप %-5d उपयोग कर सकते हैं करने के लिए प्रयोग किया जाता है -: 5 रिक्त स्थान इस तरह कवर करने के लिए प्रिंट किया जाएगा। एक मूल्य के 5 के लिए, यह अपने उत्पादन प्रिंट होगा के रूप में: - 5****
+0

थानक्स में दूसरा तर्क क्या है। यह काम करता है। क्या आप कृपया वर्णन कर सकते हैं आपके उत्तर में '% 5s'' प्रारूप() ' –

+0

@ मोहम्मदफैसल में कैसे काम करता है .. आप पूर्णांक प्रिंट कर रहे हैं, इसलिए आप'% 5d' का उपयोग कर सकते हैं .. मैं पोस्ट में समझाऊंगा .. –

+0

@ मोहम्मदफैसल: चेक [javadoc] (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#format (java.lang.String, java.lang.Object ...)) जो देता है [विवरण] से लिंक (http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#detail) –

1

मेरे उदाहरण में सरणी शामिल चरित्र स्ट्रिंग अलग लंबाई के साथ और है कि मैं व्यवस्था करने के लिए स्ट्रिंग और विभिन्न सरणियों के अन्य तार अ- थे असमर्थ था की वजह से की कंसोल पर मैच। एक अलग अवधारणा के साथ मैं कंसोल पर उन सरणी को व्यवस्थित कर सकता हूं, जो मेरे कोड नीचे दिए गए हैं।

package arrayformat; 

/** 
* 
* @author Sunil 
*/ 
public class ArrayFormat { 



    /** 
    * @param args the command line arguments 
    */ 

    public static void main(String[] args) { 

    int[] productId = new int[] 
{1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,}; 
    String[] productName= new String[]{"Pepsi","kissan jam","Herbal 
oil","Garnier man's","Lays chips","biscuits","Bournvita","Cadbury","Parker 
Vector","Nescafe",}; 
    String[] productType = new String[]{"Cold Drink","Jam","Oil","Face 
wash","chips","Biscuits","Health 
Supplement","Chocolate","Stationary","Coffee",}; 
    float[] productPrice = new float[]{24,65,30,79,10,20,140,20,150,80,}; 


     int productNameMaxlength=0; 
    int productTypeMaxlength=0; 



    for (String productName1 : productName) { 
     if (productNameMaxlength < productName1.length()) { 
      productNameMaxlength = productName1.length(); 
     } 
    } 


    for (String productType1 : productType) { 
     if (productTypeMaxlength < productType1.length()) { 
      productTypeMaxlength = productType1.length(); 
     } 
    } 



    for(int i=0;i<productType.length;i++) 

    { 
       System.out.print(i); 

     System.out.print("\t"); 

       System.out.print(productId[i]); 

       System.out.print("\t"); 

       System.out.print(productName[i]); 

     for(int j=0;j<=productNameMaxlength-productName[i].length 
    ();j++) 

     { 

     System.out.print(" "); 

     } 

     System.out.print("\t"); 

     System.out.print(productType[i]); 

     for(int j=0;j<=productTypeMaxlength-productType[i].length 
    ();j++) 

     { 
      System.out.print(" "); 
     } 

       System.out.print("\t"); 

     System.out.println(productPrice[i]); 
      }   
     } 

    } 
    and output is-- 
    Sr.No ID  NAME   TYPE    PRICE 
    0 1001 Cadbury   Chocolate   20.0 
    1 1002 Parker Vector Stationary   150.0 
    2 1003 Nescafe   Coffee    80.0 
    3 1004 kissan jam  Jam     65.0 
    4 1005 Herbal oil  Oil     30.0 
    5 1006 Garnier man's Face wash   79.0 
    6 1007 Lays chips  chips    10.0 
    7 1008 biscuits  Biscuits   20.0 
    8 1009 Bournvita  Health Supplement 140.0 
    9 1010 Pepsi   Cold Drink   24.0 

जब से मैं मेरे सवाल का मैं कहाँ ब्लॉक की वजह से मेरे सवाल पूछना सवाल पूछने और जवाब मैं अपने जवाब के हवाले कर रहा हूँ और इस सरणी प्रारूप एक अलग तरह मुझे लगता था के लिए है जवाब देने में असमर्थ हूँ।

+0

यह प्रश्न का उत्तर प्रदान नहीं करती है। किसी लेखक से स्पष्टीकरण की आलोचना करने या अनुरोध करने के लिए, अपनी पोस्ट के नीचे एक टिप्पणी छोड़ दें - आप हमेशा अपनी पोस्ट पर टिप्पणी कर सकते हैं, और एक बार आपके पास पर्याप्त [प्रतिष्ठा] (http://stackoverflow.com/help/whats-reputation) हो [किसी भी पोस्ट पर टिप्पणी करने में सक्षम] [http://stackoverflow.com/help/privileges/comment)। – AlBlue

+0

चूंकि मैं अपने प्रश्न का उत्तर देने में असमर्थ हूं, जहां मैंने सवाल पूछने के लिए ब्लॉक के कारण अपने प्रश्न पूछे हैं और उत्तर मैं अपना जवाब उद्धृत कर रहा हूं और यह एक अलग प्रकार का सरणी प्रारूप था जो मुझे लगता है। –

0

आउटपुट का स्वरूपण System.out.format ("", "") विधि का उपयोग करके किया जा सकता है इस विधि में दो इनपुट पैरामीटर पहले स्वरूपण शैली को परिभाषित करते हैं और दूसरे को मुद्रित करने के लिए मान परिभाषित करते हैं। आइए मान लें कि आप एन अंकों के मान को सही संरेखित करना चाहते हैं। आप पहले पैरामीटर "% 4 डी" पास करेंगे।

छोड़ दिया संरेखित उपयोग -ve% -nd

सही संरेखित उपयोग के लिए + ve% nd

for(int i=1; i<13; i++){ 
     for(int j=1; j<13; j++){ 
      System.out.format("%4d", i * j); //each number formatted to a width of 4 so use %4d in the format method. 
    } 
    System.out.println(); // To move to the next line. 
}