S.PRATHIBA
S.PRATHIBA

Reputation: 29

List in java using Random numbers

I am getting the following error.

import java.util.*;
import java.io.*;

public class ShufflingListAndArray
{
  public static void main(String[] args) throws IOException

{
    List services = 


    //Arrays.asList("COMPUTER", "DATA", "PRINTER");

 Arrays.asList(new String[] {"COMPUTER", "DATA", "PRINTER"}); 

   Random rnd=new Random();
  String s = services.get(rnd.nextInt(services.size()));

    Collections.shuffle(services);


    //Collections.sort(list);


    System.out.println("List sorting :"+ services);
  }
} 

After compiling the above code I get the following error.

C:\>javac ShufflingListAndArray.java
ShufflingListAndArray.java:17: incompatible types
found   : java.lang.Object
required: java.lang.String
  String s = services.get(rnd.nextInt(services.size()));
                         ^
1 error

Upvotes: 3

Views: 472

Answers (5)

missingfaktor
missingfaktor

Reputation: 92026

From your this question, it seems to me that you are using older version of Java than Java 5.

The following code should work with it :

import java.util.*;
import java.io.*;

public class ShufflingListAndArray {
  public static void main(String[] args) throws IOException {
    List services = Arrays.asList(new String[] {"COMPUTER", "DATA", "PRINTER"}); 
    Random rnd = new Random();
    String s = (String) services.get(rnd.nextInt(services.size()));
    Collections.shuffle(services);
    System.out.println("List sorting :" + services);
  }
} 

Upvotes: 0

BalusC
BalusC

Reputation: 1108642

The compilation error is pretty clear:

found   : java.lang.Object
required: java.lang.String

It says that Object is returned (found), but that your code requires it to be a String.

You need to either parameterize the List with help of Generics, so that it will instantly return a String on every List#get() call (more recommended):

List<String> services = Arrays.asList("COMPUTER", "DATA", "PRINTER");

or to downcast the returned Object to String yourself:

String s = (String) services.get(rnd.nextInt(services.size()));

Upvotes: 1

objects
objects

Reputation: 8677

need to specify it is a list of strings

List<String> services = Arrays.asList(new String[] {"COMPUTER", "DATA", "PRINTER"}); 

Upvotes: 0

Colin Gislason
Colin Gislason

Reputation: 5589

List.get() returns an Object. You need to cast it or use generics to store it in a String variable.

To use generics:

List<String> services = ...

To cast it:

String s = (String)services.get(rnd.nextInt(services.size()));

Upvotes: 1

polygenelubricants
polygenelubricants

Reputation: 383726

Change List services ... to List<String> services

Upvotes: 5

Related Questions