Java错误:“不兼容类型”消息
我在编译过程中得到一个错误在Java中: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?
在password
行,您要添加整数(如果你想被串联它们),并把它转换成字符串没有明确cast.You'll已经使用Integer.toString()
所以这样
password = Integer.toString(generator.nextInt(10) + generator.nextInt(10)
+ generator.nextInt(10) + generator.nextInt(10)
+ generator.nextInt(10) + generator.nextInt(10));
它工作在username
的原因是因为你必须添加字符串到整数放入字符串,所以concatinating当它隐含强制转换为字符串。
我怀疑OP试图将多个整数连接为字符串,而不是将它们相加,然后将总和转换为单个字符串。所以他应该将'generator.nextInt(X)'放在'Integer.toString'中,而不是全部的总和。 –
是的。我同意他的目标是连接,但在目前的状态下,它正在增加它们。解决方案是Integer.toString()来在整个事物之前添加一个'“”+“。 – Nicholas
非常感谢你!你们两个都为这个项目拯救了我的生命 – user951901
简单的解决方法是增加 “” 第一,如:
password = "" + generator.nextInt(10) ...
更好的办法是使用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();
看的generator.nextInt()
返回类型,它返回一个int
但您正在尝试将其分配给String
这就是它所说的:不兼容的类型您无法将int分配给字符串。
读取您的错误消息,它看起来像是在寻找一个字符串,但发现了一个int。嗯......我想知道是否有任何将Integer转换为String的函数。 – arunkumar
为了将整数放入字符串中,您有两个选择:1.'Integer.toString(yourint)'。和2.添加blankstring到你的整数像这个'字符串mystring =“”+ 25'。如果你不这样做,编译器会让你知道你犯了一个错误。正确的是,你正在把它不属于的地方。 –