Java错误:“不兼容的类型”消息

时间:2011-09-19 03:19:26

标签: java incompatibletypeerror

我在编译期间遇到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?

4 个答案:

答案 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。