2015-09-20 2 views
-1

Alors peut-être beaucoup d'entre vous connaît l'exercice, nous devons faire des primitives d'apprentissage, où nous avons besoin d'imprimer h3110 w0r1d 2.0 vraitrès nouveau à la programmation et au peu d'exercice, je ne vois pas où je me trompe

si le mien est ceci;

public class main { 
public static void main(String[] args) { 
    // H3110 w0r1d 2.0 true 
    byte bir = 0; 
    short iki = 31; 
    int uc = 10; 
    long dort = 1; 
    float bes = 2.0f; 
    char yedi = 'H'; 
    char sekiz = 'w'; 
    char dokuz = 'd'; 
    char ekstra = ' '; 
    char ramk = 'r'; 
    boolean on = true; 

    String son = (yedi + iki + uc + ekstra + sekiz + bir + ramk + dort + dokuz + ekstra + bes + ekstra + on); 
    System.out.println(son); 







} 

}

et leur solution est la suivante;

public class Main { 
public static void main(String[] args) { 
    byte zero = 0; 
    short a = 3; 
    int b = 1; 
    char d = ' '; 
    float e = 2.0f; 
    boolean f = true; 
    String output = "H" + a + b + b + zero + d + "w" + zero + "r" + b + "d" + d + e + d + f; 
    System.out.println(output); 
} 

}

Alors moi me donne des erreurs booléens et flotter, mais je ne peux pas voir ce qui ne va pas avec que primitives.

l'erreur Im obtenir est la suivante

Main.java:16: error: bad operand types for binary operator '+' 
    String son = (yedi + iki + uc + ekstra + sekiz + bir + ramk + dort + dokuz + ekstra + bes + ekstra + on); 
                            ^

premier type: float second type: boolean une erreur

+1

Généralement, lorsque vous demandez de l'aide, vous devez inclure les messages d'erreur que vous obtenez. C'est une aide précieuse pour les autres lorsque vous essayez de comprendre votre problème. –

+1

Juste pour que vous sachiez, je ne peux pas imaginer immédiatement une raison pour laquelle je soumettrais un nouveau programmeur à un tel exercice. Si votre enseignant vous fixe des tâches comme celle-ci, et si vous avez une option, trouvez un meilleur professeur. –

+0

Je n'ai pas de professeur, cet exercice est de learnjavaonline.org, et Im maintenant éditer l'erreur –

Répondre

5

La ligne:

String son = (yedi + iki + uc ... 

attribue une concaténation de plusieurs paramètres de différents types, dont aucun n'est une chaîne, dans une chaîne.

La « solution » est de commencer l'affectation par concaténer une chaîne aux autres paramètres:

String output = "H" + a + b + ... 
       ^

qui jetteront le reste d'entre eux - à cordes.

Vous pouvez faire la même chose avec le premier exemple en ajoutant une chaîne vide au début:

String son = ("" + yedi + iki + uc ... 
      ^

Side-Note: Je suis totalement d'accord avec T.J. Le commentaire de Crowder ci-dessus ...

+0

merci pour votre réponse. mais maintenant je ne comprends pas pourquoi il a dit "booléen" et "float" spesifically dans l'erreur –

+0

@OktayMert regard sur les types qui sont déclarés pour les variables: 'byte bir, float e, booléen f ...' – alfasin

0

L'exemple fonctionne parce que tout peut être automatiquement converti en une chaîne, et l'addition est à gauche associative.

La différence entre un char et un String peut ne pas être évident pour vous. 'C' est un littéral char, tandis que "C" est un littéral String (qui peut contenir plusieurs caractères).

Parcourons quelques pas de la concaténation de chaînes dans l'exemple, montrant conceptuellement comment l'addition est réalisée:

"H" + a + b + b + zero + d + "w" + zero + "r" + b + "d" + d + e + d + f; 
"H3" + b + b + zero + d + "w" + zero + "r" + b + "d" + d + e + d + f; 
"H31" + b + zero + d + "w" + zero + "r" + b + "d" + d + e + d + f; 
"H311" + zero + d + "w" + zero + "r" + b + "d" + d + e + d + f; 
"H3110" + d + "w" + zero + "r" + b + "d" + d + e + d + f; 

... et ainsi de suite. Chaque ajout sera toujours un String + une autre valeur, ce qui est bien. D'autre part, l'ajout dans votre code tente d'ajouter des types incompatibles comme int et boolean, qui ne volent pas. En outre, il essaie de stocker le résultat dans une variable String, ce qui n'est pas possible, car le résultat n'est pas String.

+0

merci pour ta réponse. –