4

I have looked in many places online and all seem to give me the same solution. So it's obvious that I have made some sort of silly mistake I cannot see. Can someone please point me in the right direction. Thanks a mill.

Here is my code:

import java.util.Arrays;

public class Solution { 
    public static void main(String[] args) {
        int[] outcomes = {1, 2, 3, 4, 5, 6};        
        int count = 0;      
        for(int y = 1; y<=6; y++){      
            if(Arrays.asList(outcomes).contains(y)){                
                count++;                
                System.out.println("outcomes contains "+ y);                
            }               
        }           
        System.out.println(count);  
    }

The final output should be 6 but it is 0.

rtruszk
  • 3,868
  • 13
  • 33
  • 53
Greg Peckory
  • 6,660
  • 15
  • 61
  • 101

2 Answers2

6
Arrays.asList(int[])

returns a single-element list. The one element is the int[] you have passed in.

If you change the declaration

int[] outcomes

to

Integer[] outcomes

you'll get the expected result.

Marko Topolnik
  • 179,046
  • 25
  • 276
  • 399
0

Two things should be corrected in your code:

  1. Changing int[] to Integer[] (as sugested Marko Topolnik in previous answer)
  2. Moving Arrays.asList befor for loop. Now array is converted to list 6 times.

After this changes code will look as follows:

public static void main(String[] args) {

    Integer[] outcomes = {1, 2, 3, 4, 5, 6};
    List outcomesList = Arrays.asList(outcomes);
    int count = 0;

    for(int y = 1; y<=6; y++){
        if(outcomesList.contains(y)){
            count++;
            System.out.println("outcomes contains "+ y);
        }
    }
    System.out.println(count);
}
rtruszk
  • 3,868
  • 13
  • 33
  • 53