| Author |
Question about "null" intepretations
|
Benjamin Ng
Greenhorn
Joined: Jul 12, 2012
Posts: 13
|
|
Hi people,
sorry i have a question which might be stupid but i want to clarify something. For my DB interface i have the following statement:
// Returns an array of record numbers that match the specified
// criteria. Field n in the database file is described by
// criteria[n]. A null value in criteria[n] matches any field
// value. A non-null value in criteria[n] matches any field
// value that begins with criteria[n]. (For example, "Fred"
// matches "Fred" or "Freddy".)
public int[] find(String[] criteria);
does a null value in can be null or "" or it only refers to null?
|
 |
Roel De Nijs
Bartender
Joined: Jul 19, 2004
Posts: 4351
|
|
|
null is null in my opinion. Empty is something completely different.
|
SCJA, SCJP (1.4 | 5.0 | 6.0), SCJD
http://www.javaroe.be/
|
 |
Himai Minh
Ranch Hand
Joined: Jul 29, 2012
Posts: 289
|
|
Benjamin,
Refer to Roberto Buddy's test. He uses String[] criteria = {"Palace", "Smallvile", null, null, null, null, null} to test his find algorithm. I believe our assignment should have null pointer exception handling in this case.
|
 |
K. Tsang
Ranch Hand
Joined: Sep 13, 2007
Posts: 1219
|
|
Hi Benjamin
If you read the comments carefully you should have realized that "null" indicates a wildcard.
|
K. Tsang JavaRanch SCJP5 SCJD/OCM-JD
|
 |
Benjamin Ng
Greenhorn
Joined: Jul 12, 2012
Posts: 13
|
|
|
thanks for the reply everyone. Now i doing junit testing on the find method for the Data.java and i need some clarification. If my criteria array is all empty value which means is {"","","","","",""}, what should the expected result for the find method? 0 records or all valid record in the database?
|
 |
Himai Minh
Ranch Hand
Joined: Jul 29, 2012
Posts: 289
|
|
0 records.
Because all records have their names and cities. Their names and cities are not "".
|
 |
Benjamin Ng
Greenhorn
Joined: Jul 12, 2012
Posts: 13
|
|
Himai Minh wrote:0 records.
Because all records have their names and cities. Their names and cities are not "".
how about i pass in a String array of {null,null,"","","",""}, is the expected result still 0?
|
 |
Roel De Nijs
Bartender
Joined: Jul 19, 2004
Posts: 4351
|
|
|
In my find-method passing an array containing all null-values will result in all valid records being returned. If an array is passed with non-null values the null values are simply ignored.
|
 |
Himai Minh
Ranch Hand
Joined: Jul 29, 2012
Posts: 289
|
|
Benjamin Ng wrote:
Himai Minh wrote:0 records.
Because all records have their names and cities. Their names and cities are not "".
how about i pass in a String array of {null,null,"","","",""}, is the expected result still 0?
The expected result is all records. K Tsang buddy said null indicates a wildcard. The first "null" indicates all records with any name. The second null indicates all records with any city.
If you have a string array of {null, "New York", null, null, null, null}. The expected result is any name in New York city.
|
 |
Benjamin Ng
Greenhorn
Joined: Jul 12, 2012
Posts: 13
|
|
Himai Minh wrote:
Benjamin Ng wrote:
Himai Minh wrote:0 records.
Because all records have their names and cities. Their names and cities are not "".
how about i pass in a String array of {null,null,"","","",""}, is the expected result still 0?
The expected result is all records. K Tsang buddy said null indicates a wildcard. The first "null" indicates all records with any name. The second null indicates all records with any city.
If you have a string array of {null, "New York", null, null, null, null}. The expected result is any name in New York city.
Sorry i am getting confused. Let me clarify something, based on my understanding, if i send a String array of {null,null,"","","",""}, shouldn't the expected result is 0 because even though both name and location are using null, but the rest of the search is not using wildcard so the check should be something like <is the rate begins with "">, <is the size begins with "">, <is the owner begins with ""> which for these cases they are not begin with "" so the final results is return 0 records?
|
 |
Himai Minh
Ranch Hand
Joined: Jul 29, 2012
Posts: 289
|
|
Hi Benjamin buddy,
Agree. This is confusing.
You may want to assume "" is a value. For example, name is "".
If the name criteria is "", search for names "".
If the name criteria is null, return all records with any name.
Agree with this ?
|
 |
Benjamin Ng
Greenhorn
Joined: Jul 12, 2012
Posts: 13
|
|
Himai Minh wrote:Hi Benjamin buddy,
Agree. This is confusing.
You may want to assume "" is a value. For example, name is "".
If the name criteria is "", search for names "".
If the name criteria is null, return all records with any name.
Agree with this ?
Yes i agreed.
|
 |
 |
|
|
subject: Question about "null" intepretations
|
|
|