java - सबस - सम प्राकृत संख्या




मैं बाईं ओर शून्य के साथ एक पूर्णांक कैसे पैड कर सकते हैं? (8)

आप Google Guava का उपयोग कर सकते हैं:

Maven:

<dependency>
     <artifactId>guava</artifactId>
     <groupId>com.google.guava</groupId>
     <version>14.0.1</version>
</dependency>

नमूना कोड:

String paddedString1 = Strings.padStart("7", 3, '0'); //"007"
String paddedString2 = Strings.padStart("2020", 3, '0'); //"2020"

ध्यान दें:

Guava बहुत उपयोगी पुस्तकालय है, यह Collections , Caches , Functional idioms , Concurrency , Strings , Primitives , Ranges , IO , Hashing , EventBus , आदि से संबंधित कई सुविधाएं भी प्रदान करता है।

रेफरी: GuavaExplained

एक स्ट्रिंग में कनवर्ट करते समय आप जावा में शून्य के साथ पैड को int कैसे छोड़ते हैं?

मैं मूल रूप से अग्रणी शून्यों (जैसे 1 = "0001") के साथ 99 99 तक पूर्णांक को पैड आउट करना चाहता हूं।


इस उदाहरण को मिला ... परीक्षण करेंगे ...

import java.text.DecimalFormat;
class TestingAndQualityAssuranceDepartment
{
    public static void main(String [] args)
    {
        int x=1;
        DecimalFormat df = new DecimalFormat("00");
        System.out.println(df.format(x));
    }
}

इसका परीक्षण किया और:

String.format("%05d",number);

दोनों काम, मेरे उद्देश्यों के लिए मुझे लगता है कि स्ट्रिंग। फोर्मेट बेहतर और अधिक संक्षिप्त है।


मान लीजिए कि आप 11 को 011 प्रिंट करना चाहते हैं

आप एक "%03d" उपयोग कर सकते हैं : "%03d"

आप इस फॉर्मेटर का उपयोग इस तरह कर सकते हैं:

int a = 11;
String with3digits = String.format("%03d", a);
System.out.println(with3digits);

वैकल्पिक रूप से, कुछ जावा विधियां सीधे इन स्वरूपकों का समर्थन करती हैं:

System.out.printf("%03d", a);

मेरा कोड जांचें जो पूर्णांक और स्ट्रिंग के लिए काम करेगा।

मान लें कि हमारा पहला नंबर 2 है। और हम उसमें शून्य जोड़ना चाहते हैं ताकि अंतिम स्ट्रिंग की लंबाई 4 हो। इसके लिए आप निम्न कोड का उपयोग कर सकते हैं

    int number=2;
    int requiredLengthAfterPadding=4;
    String resultString=Integer.toString(number);
    int inputStringLengh=resultString.length();
    int diff=requiredLengthAfterPadding-inputStringLengh;
    if(inputStringLengh<requiredLengthAfterPadding)
    {
        resultString=new String(new char[diff]).replace("\0", "0")+number;
    }        
    System.out.println(resultString);

यदि आपके मामले में प्रदर्शन महत्वपूर्ण है तो आप String.format फ़ंक्शन की तुलना में इसे कम ओवरहेड के साथ स्वयं कर सकते हैं:

/**
 * @param in The integer value
 * @param fill The number of digits to fill
 * @return The given value left padded with the given number of digits
 */
public static String lPadZero(int in, int fill){

    boolean negative = false;
    int value, len = 0;

    if(in >= 0){
        value = in;
    } else {
        negative = true;
        value = - in;
        in = - in;
        len ++;
    }

    if(value == 0){
        len = 1;
    } else{         
        for(; value != 0; len ++){
            value /= 10;
        }
    }

    StringBuilder sb = new StringBuilder();

    if(negative){
        sb.append('-');
    }

    for(int i = fill; i > len; i--){
        sb.append('0');
    }

    sb.append(in);

    return sb.toString();       
}

प्रदर्शन

public static void main(String[] args) {
    Random rdm;
    long start; 

    // Using own function
    rdm = new Random(0);
    start = System.nanoTime();

    for(int i = 10000000; i != 0; i--){
        lPadZero(rdm.nextInt(20000) - 10000, 4);
    }
    System.out.println("Own function: " + ((System.nanoTime() - start) / 1000000) + "ms");

    // Using String.format
    rdm = new Random(0);        
    start = System.nanoTime();

    for(int i = 10000000; i != 0; i--){
        String.format("%04d", rdm.nextInt(20000) - 10000);
    }
    System.out.println("String.format: " + ((System.nanoTime() - start) / 1000000) + "ms");
}

परिणाम

स्वयं का कार्य: 16 9 7 एमएमएस

String.format : 38134ms


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

import java.text.NumberFormat;  
public class NumberFormatMain {  

public static void main(String[] args) {  
    int intNumber = 25;  
    float floatNumber = 25.546f;  
    NumberFormat format=NumberFormat.getInstance();  
    format.setMaximumIntegerDigits(6);  
    format.setMaximumFractionDigits(6);  
    format.setMinimumFractionDigits(6);  
    format.setMinimumIntegerDigits(6);  

    System.out.println("Formatted Integer : "+format.format(intNumber).replace(",",""));  
    System.out.println("Formatted Float   : "+format.format(floatNumber).replace(",",""));  
 }    
}  

java.lang.String.format(String,Object...) उपयोग इस तरह करें:

String.format("%05d", yournumber);

5 की लंबाई के साथ शून्य-पैडिंग के लिए। हेक्साडेसिमल आउटपुट के लिए d को x साथ "%05x"

पूर्ण स्वरूपण विकल्प java.util.Formatter हिस्से के रूप में दस्तावेज किए गए हैं।


int x = 1;
System.out.format("%05d",x);

अगर आप स्क्रीन पर सीधे स्वरूपित पाठ मुद्रित करना चाहते हैं।






zero-pad