我在编译期间遇到Java错误:
UserID.java:36: error: incompatible types
+ generator.nextInt(10);
^
required: String
found: int
这是Java代码:
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
}
}
此错误的原因是什么?如何解决?为什么不自动将int提升为String?
答案 0 :(得分:5)
在password
行上,您将添加整数(当您想要连接它们时)并将其放入一个没有显式强制转换的字符串中。您将不得不使用Integer.toString()
所以喜欢这个
password = Integer.toString(generator.nextInt(10) + generator.nextInt(10)
+ generator.nextInt(10) + generator.nextInt(10)
+ generator.nextInt(10) + generator.nextInt(10));
它在username
中工作的原因是因为你将字符串添加到整数中将put放入一个字符串中,所以它在汇合时隐式地将它转换为字符串。
答案 1 :(得分:2)
更好的方式 使用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();
答案 2 :(得分:1)
简单的解决方法是首先添加“”,例如:
password = "" + generator.nextInt(10) ...
答案 3 :(得分:0)
查看generator.nextInt()
返回int
的返回类型,但是您尝试将其分配给String
,它的内容是:不兼容类型您不能将int分配给String。