?
Solved

unknown problem

Posted on 2004-07-31
16
Medium Priority
?
212 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 5
  • 5
16 Comments
 
LVL 86

Accepted Solution

by:
CEHJ earned 1000 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
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

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 1000 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 1000 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
 

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

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

Java contains several comparison operators (e.g., <, <=, >, >=, ==, !=) that allow you to compare primitive values. However, these operators cannot be used to compare the contents of objects. Interface Comparable is used to allow objects of a cl…
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…
Video by: Michael
Viewers learn about how to reduce the potential repetitiveness of coding in main by developing methods to perform specific tasks for their program. Additionally, objects are introduced for the purpose of learning how to call methods in Java. Define …
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.
Suggested Courses
Course of the Month8 days, 12 hours left to enroll

764 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