7

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

4 回答 4

8

在线上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是因为您将字符串添加到整数中并放入字符串中,因此它在连接时将其隐式转换为字符串。

于 2011-09-19T03:23:24.593 回答
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();
于 2011-09-19T03:31:51.943 回答
1

简单的解决方法是先添加“”,例如:

password = "" + generator.nextInt(10) ...
于 2011-09-19T03:28:18.333 回答
0

查看generator.nextInt()它返回的返回类型,int但您试图将其分配给它,String这就是它所说的:不兼容的类型,您不能将 int 分配给字符串。

于 2011-09-19T03:32:22.927 回答