Reputation: 103
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?
Upvotes: 8
Views: 78638
Reputation: 199333
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.
Upvotes: 0
Reputation: 94653
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();
Upvotes: 2
Reputation: 78033
Easy fix is to add "" first, e.g.:
password = "" + generator.nextInt(10) ...
Upvotes: 1
Reputation: 7521
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.
Upvotes: 9