Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

is split() method's Arrray assignment different?

hi guys im working on a project for creating my own custom datepicker in java. but I got stuck here in a place when using the split method.when i split a string into array of strings, and run a loop through the array to find a specific value and if that specific value is found within the array, then to print that "the value blalala is found,but it doesn’t work the way i expect it to.even if "dd" is available it doesn’t print "dd is here".ill provide the code below here

public static void main(String[] args) {
        String date="dd/mm/yyyy";
        String[] datesplit=date.split("/", 5);
        
        for(int c=0;c<=2;c++)
        {
            if(datesplit[c]=="dd")
            {
                System.out.println("dd is here");
            }
        }
    }

but if i loop through the array and print every value, it outputs every value

public static void main(String[] args) {
        String date="dd/mm/yyyy";
        String[] datesplit=date.split("/", 5);
        for(int c=0;c<=2;c++)
        {
            System.out.println(datesplit[c]);
        }

but I’ve tried it without the split method by creating an array manually and then looping through it to find the value i want and print "the value is found". surprisingly it works.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

    public static void main(String[] args) {
        
        String[] date={"dd","mm","yyyy"};
        for(int c=0;c<=2;c++)
        {
            if(date[c]=="dd")
            {
                System.out.println("dd is here");
            }
        }

I’m baffled why the array is buggy when using the split method().any ideas

>Solution :

You’re confronting two references with the == operator.

if(datesplit[c]=="dd")

You cannot do that. References must be confronted with the equals method. The == operator checks the content of two variables. A reference contains the memory address of the object it points to, therefore when you’re performing if(datesplit[c]=="dd"), you’re checking if the address contained within datesplit[c] is equal to the address of the reference containing "dd", which are of course different since they point to two different objects in memory. The == can be used only for primitive types as they contain the actual value they represent.

What you need to do is write your comparison with the equals method like so:

public static void main(String[] args) {
    String date = "dd/mm/yyyy";
    String[] datesplit = date.split("/", 5);

    for (int c = 0; c <= 2; c++) {
        if (datesplit[c].equals("dd")) {
            System.out.println("dd is here");
        }
    }
}
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading