2011-09-19 8 views
5

sto ottenendo un errore in Java durante la compilazione "tipi incompatibili":errore Java: messaggio

UserID.java:36: error: incompatible types 
      + generator.nextInt(10); 
      ^
    required: String 
    found: int 

Ecco il codice 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 

    } 
} 

Qual è il motivo di questo errore e come lo aggiusto? Perché non promuove automaticamente l'int a una stringa?

+2

Leggere il messaggio di errore, sembra che stia cercando una stringa ma che abbia trovato un int. hmm ... Mi chiedo se ci sia una funzione che converte un intero in una stringa. – arunkumar

+0

Per inserire un intero in una stringa avete due scelte: 1. 'Integer.toString (yourint)'. e 2. Aggiungi una stringa vuota al tuo intero come questo 'String mystring =" "+ 25'. Se non lo fai, il compilatore ti farà sapere che hai fatto un errore. Giustamente, stai mettendo qualcosa a cui non appartiene. –

risposta

5

Sulla linea password, si aggiunge numeri interi (Quando si desidera essere loro concatenare) e metterlo in una stringa senza un esplicito cast.You'll deve usare Integer.toString()

Così ti piace questa

password = Integer.toString(generator.nextInt(10) + generator.nextInt(10) 
     + generator.nextInt(10) + generator.nextInt(10) 
     + generator.nextInt(10) + generator.nextInt(10)); 

il motivo per cui lavora in username è perché avete le stringhe che si aggiunge al interi put in una stringa, quindi è implicitamente il cast in una stringa quando concatinating.

+3

I Sospetto che l'OP stia cercando di concatenare più int come stringhe, piuttosto che sommarle, quindi convertire la somma in una singola stringa. Quindi dovrebbe eseguire il wrapping di ogni 'generator.nextInt (X)' in 'Integer.toString' piuttosto che della somma di tutti. –

+0

Sì. Sono d'accordo che il suo obiettivo è la concatinazione, ma nel suo stato attuale le sta aggiungendo. La soluzione è Integer.toString() per aggiungere un '" "+' prima dell'intera cosa. – Nicholas

+0

Grazie mille !!! Entrambi mi hai salvato la vita per questo progetto – user951901

1

Facile correzione è di aggiungere "" prima, ad esempio:

password = "" + generator.nextInt(10) ... 
2

Modo migliore è utilizzare 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

sguardo al tipo di ritorno di generator.nextInt() restituisce un int ma stai cercando di assegnarlo a un String che è quello che dice: tipo incompatibile non è possibile assegnare un int a una stringa.

Problemi correlati