2011-09-19 132 views
5

我在編譯過程中得到一個錯誤在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?

+2

讀取您的錯誤消息,它看起來像是在尋找一個字符串,但發現了一個int。嗯......我想知道是否有任何將Integer轉換爲String的函數。 – arunkumar

+0

爲了將整數放入字符串中,您有兩個選擇:1.'Integer.toString(yourint)'。和2.添加blankstring到你的整數像這個'字符串mystring =「」+ 25'。如果你不這樣做,編譯器會讓你知道你犯了一個錯誤。正確的是,你正在把它不屬於的地方。 –

回答

5

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當它隱含強制轉換爲字符串。

+3

我懷疑OP試圖將多個整數連接爲字符串,而不是將它們相加,然後將總和轉換爲單個字符串。所以他應該將'generator.nextInt(X)'放在'Integer.toString'中,而不是全部的總和。 –

+0

是的。我同意他的目標是連接,但在目前的狀態下,它正在增加它們。解決方案是Integer.toString()來在整個事物之前添加一個'「」+「。 – Nicholas

+0

非常感謝你!你們兩個都爲這個項目拯救了我的生命 – user951901

1

簡單的解決方法是增加 「」 第一,如:

password = "" + generator.nextInt(10) ... 
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(); 
0

看的generator.nextInt()返回類型,它返回一個int但您正在嘗試將其分配給String這就是它所說的:不兼容的類型您無法將int分配給字符串。