Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
342 views
in Technique[技术] by (71.8m points)

java - Lookup of a number in an array

I wanted to ask what am I doing wrong that is causing the if statement to be false every time I run the program. I've also tried to use .equals(num) instead of the Array.asList(num) to check if the value is in there, but that caused the for loop to repeat the "Not in database" multiple times.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Arrays.asList(Data) creates a list whose only element is an array of int (i.e. List<int[]>). That's why Arrays.asList(Data).contains(num)) always returns false.

Try changing your array to :

Integer Data[] = new Integer[n];

This will make Arrays.asList(Data) create a list of Integer (List<Integer>) containing all the integers of the original array, which is what you need.

The reason for this behavior is the Arrays.asList expects one or more Objects as its input. If you pass an array of Objects (such as Integer[]), it is equivalent to passing multiple Objects. If, however, you pass an array of primitives (such as int[]), the only Object in your input is the array itself, so Arrays.asList() creates a list whose only element is that array.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...