2017-09-13 2 views
-2
char[] string = new char[16]; 
for(int i = 15; i >= 0; i--,input>>=1){ 
    string[i] = (char)(input&1+48);//ascii '0'=48 
} 
return String.valueOf(string); 

utilisation de cette façon, va obtenir une sortie brouillées comme suit:Java utilisent String.valueOf (char []), mais montre brouillées

Entrée:

0 

Sortie:

(will show binary square) 
+2

Savez-vous comment le & fonctionne ici 'input & 1'? – KarelG

+1

Qu'est-ce que 'input'? S'il vous plaît fournir un [mcve], avec un accent particulier sur COMPLETE. –

+0

Pour l'utilisateur qui a duper-martelé cela, je soumets respectueusement que la question est trop floue pour être un dup de quoi que ce soit. Le fermer comme un dup le consacre comme légitime, quand il doit probablement être fermé comme hors-sujet ou non clair. –

Répondre

1

Analyse à propos de cette erreur:

char[] string2 = {(char)(0&1+48),(char)48,'0','0','0','0','0','0','0','0','0','0','0','0','0','0'};//Test 
char[] string2 = {(char)(((int)0&1)+48),(char)48,'0','0','0','0','0','0','0','0','0','0','0','0','0','0'};//Test 
System.out.println(string2);//Test 
System.out.println(String.valueOf(string2));//Test 

Quand j'écris "(char) (((int) 0 & 1) +48)" l'IDE m'a dit jetai int est redondant

Le code droit:

char[] string = new char[16]; 
for(int i = 15; i >= 0; i--,input>>=1){ 
    string[i] = (char)((int)(input&1)+48);//ascii '0'=48 
} 
return String.valueOf(string); 

deuxième Way:

StringBuilder sb = new StringBuilder(""); 
for(int i = 15; i >= 0; i--,input>>=1){ 
    sb.insert(0,String.valueOf(input&1)); 
} 
return sb.toString();