Domanda

I am getting an error in Java during compilation:

UserID.java:36: error: incompatible types
            + generator.nextInt(10);
            ^
  required: String
  found:    int

Here is the Java code:

public class UserID {

  private String firstName; 
  private String userId;  
  private String password;

  public UserID(String first) {
     Random generator = new Random();

     userId = first.substring(0, 3) + 
        + generator.nextInt(1) + 
       (generator.nextInt(7) + 3) + generator.nextInt(10);     //this works

     password = generator.nextInt(10) + generator.nextInt(10);   //Error is here

  } 
}

What is the reason for this error and how do I fix it? Why is it not automatically promoting the int to a String?

È stato utile?

Soluzione

On the password line, you're adding Integers(When you want to be concatenating them) and putting it into a string without an explicit cast.You'll have to use Integer.toString()

So like this

password = Integer.toString(generator.nextInt(10) + generator.nextInt(10)
        + generator.nextInt(10) + generator.nextInt(10)
        + generator.nextInt(10) + generator.nextInt(10));

The reason it works in username is because you have Strings being added to integers the put into a String, so it's implicitly casting it to a String when concatinating.

Altri suggerimenti

Better way is to use StringBuilder,

StringBuilder sb=new StringBuilder();
sb.append(first.substring(0, 3));
sb.append(last.substring(0, 3));
sb.append(generator.nextInt(1));
sb.append(generator.nextInt(7) + 3);
sb.append(generator.nextInt(10));

userId=sb.toString();

Easy fix is to add "" first, e.g.:

password = "" + generator.nextInt(10) ...

Look at the return type of generator.nextInt() it returns an int but you're trying to assign it to a String that's what it says: incompatible type you can't assign an int to a String.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top