Solved

unknown problem

Posted on 2004-07-31
16
206 Views
Last Modified: 2012-05-05
Hi experts,
Can someone please tell me what I'm doing wrong here.. I wrote this code

static public doctor FindDoctor(String searchname)
 {
   doctor found=null;
   
   for ( int i = 0; i < getnumofdoc(); i++ )
   {  
     if (darray[i].getname()== searchname)
          {
            found=darray[i];
          }    
   }
   
 return found;  
 }


then I tried testing it with this

String j="jack";

     if(FindDoctor(j)!=null)
     {
       System.out.println("found");
     }
     else System.out.println("not found jack");


when I ran it I kept getting "not found jack" even whenn it was supposed to be returning "found"
where is the problem?

thanks
0
Comment
Question by:Samooramad
  • 6
  • 5
  • 5
16 Comments
 
LVL 86

Accepted Solution

by:
CEHJ earned 250 total points
ID: 11684161
>>if (darray[i].getname()== searchname)

should be

if (darray[i].getname().equals(searchname))
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11684172
Incidentally, your accessor methods should be 'getName' and your variable probably 'searchName'
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11684178
Your class name should be 'Doctor' and your method name 'findDoctor'
0
 

Author Comment

by:Samooramad
ID: 11684191
that did it... could you explain why it didn't work?

why should I change them
0
 
LVL 14

Assisted Solution

by:sudhakar_koundinya
sudhakar_koundinya earned 250 total points
ID: 11684196
And also take care that, once it is found then break the loop. that increases the performance


if (darray[i].getname()== searchname)
          {
            found=darray[i];
              break;

          }    
0
 
LVL 14

Assisted Solution

by:sudhakar_koundinya
sudhakar_koundinya earned 250 total points
ID: 11684204
Simple answer is
== is to match the objects but not the object contents
0
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 11684218
>>if (darray[i].getname()== searchname)

should be if (darray[i].getname().equals( searchname))
0
 

Author Comment

by:Samooramad
ID: 11684220
ok that makes sence :)
thank you (both)
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

Author Comment

by:Samooramad
ID: 11684235
>>our class name should be 'Doctor' and your method name 'findDoctor'
would it make any differnce CEHJ?
0
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 11684239
Well, first off, == is a fundamental operator in the language. The result type of the expression is a boolean. For comparing boolean types, it compares the operands for the same truth value. For comparing reference types, it compares the operands for the same reference value (i.e., refer to the same object or are both null). For numeric types, it compares the operands for the same integer value or equivalent floating point values.

In contrast, equals() is an instance method which is fundamentally defined by the java.lang.Object class. This method, by convention, indicates whether the receiver object is "equal to" the passed in object. The base implementation of this method in the Object class checks for reference equality. Other classes, including those you write, may override this method to perform more specialized equivalence testing.

The typical mistake that most people do is in using == to compare two strings when they really should be using the String class's equals() method. From above, you know that the operator will only return "true" when both of the references refer to the same actual object. But, with strings, most uses want to know whether or not the value of the two strings are the same -- since two different String objects may both have the same (or different) values.
0
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 11684242
>>would it make any differnce CEHJ?


This will not make any difference but maintaining the java standards increases the readabilty
0
 

Author Comment

by:Samooramad
ID: 11684246
wow..thank you sudhakar...that cleared it up for me :)
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11684248
You could also do it like this:

static public doctor FindDoctor(String searchname) {
      List doctors = Arrays.asList(darray);
      Collections.sort(doctors);
      int ix = -1;
      return ((ix = Collections.binarySearch(doctors, searchname)) >= 0? (doctor)list.get(ix) : null;
}
0
 

Author Comment

by:Samooramad
ID: 11684255
you might have to explain that before I could use it CEHJ :)
0
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 11684274
Well
That is good one If we depends on List from beginning otherwise that  just reduces a performance

Reasons.

Object Array need to be converted to List (means all objects will be added to List instance)
List need to be converted to sorted list (objects in list will be shuffeled as sorted)

Regards
Sudhakar
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11684288
It will probably decrease performance for small arrays but could increase it for large ones
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Are you developing a Java application and want to create Excel Spreadsheets? You have come to the right place, this article will describe how you can create Excel Spreadsheets from a Java Application. For the purposes of this article, I will be u…
Java Flight Recorder and Java Mission Control together create a complete tool chain to continuously collect low level and detailed runtime information enabling after-the-fact incident analysis. Java Flight Recorder is a profiling and event collectio…
Viewers will learn about the regular for loop in Java and how to use it. Definition: Break the for loop down into 3 parts: Syntax when using for loops: Example using a for loop:
This theoretical tutorial explains exceptions, reasons for exceptions, different categories of exception and exception hierarchy.

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

25 Experts available now in Live!

Get 1:1 Help Now